Welcome 微信登录

首页 / 软件开发 / Delphi

多线程编程(10) - 多线程同步之Mutex(互斥对象)

多线程编程(10) - 多线程同步之Mutex(互斥对象)

多线程编程(10) - 多线程同步之Mutex(互斥对象)2009-12-08 博客园 万一原理分析:互斥对象是系统内核对象, 各线程都可以拥有它, 谁拥有谁就能执行;执行完毕, 用 ReleaseMutex 函数释放拥有权, 以让其他等待的线程使用.其他线程可用 WaitForSingleObject 函数排队等候(等候也可以理解为排队申请).使用过程:var hMutex: THandle; {应该先声明一个全局的互斥句柄}CreateMutex ...
多线程编程(11) - 多线程同步之Mutex(互斥对象)[续]

多线程编程(11) - 多线程同步之Mutex(互斥对象)[续]

多线程编程(11) - 多线程同步之Mutex(互斥对象)[续]2009-12-08 博客园 万一Mutex 作为系统核心对象是可以跨进程的(临界区就不行), 我们可以利用互斥对象禁止程序重复启动.工作思路:先用 OpenMutex 尝试打开一个自定义名称的 Mutex 对象, 如果打开失败说明之前没有这个对象存在;如果之前没有这个对象, 马上用 CreateMutex 建立一个, 此时的程序应该是第一次启动;再重复启动时, 那个 OpenMutex 就有...
多线程编程(12) - 多线程同步之Semaphore(信号对象)

多线程编程(12) - 多线程同步之Semaphore(信号对象)

多线程编程(12) - 多线程同步之Semaphore(信号对象)2009-12-08 博客园 万一之前已经有了两种多线程的同步方法:CriticalSection(临界区) 和 Mutex(互斥), 这两种同步方法差不多, 只是作用域不同;CriticalSection(临界区) 类似于只有一个蹲位的公共厕所, 只能一个个地进;Mutex(互斥) 对象类似于接力赛中的接力棒, 某一时刻只能一个人持有, 谁拿着谁跑.什么是 Semaphore(信号或叫信号...
多线程编程(13) - 多线程同步之Event(事件对象)

多线程编程(13) - 多线程同步之Event(事件对象)

多线程编程(13) - 多线程同步之Event(事件对象)2009-12-08 博客园 万一据说 Event(事件对象) 是多线程最原始的同步手段, 我觉得它是最灵活的一个.Event 对象(的句柄表)中主要有两个布尔变量, 从它的建立函数中可以看得清楚:function CreateEvent( lpEventAttributes: PSecurityAttributes; {安全设置} bManualReset: BOOL; {第一...
多线程编程(15) - 多线程同步之WaitableTimer(等待定时器对象)[续]

多线程编程(15) - 多线程同步之WaitableTimer(等待定时器对象)[续]

多线程编程(15) - 多线程同步之WaitableTimer(等待定时器对象)[续]2009-12-08 博客园 万一本次专门研究下 SetWaitableTimer 的第二个参数(起始时间).它有正值、负值、0值三种情况, 前面已用过 0值.先学习负值(相对时间), 也就是从当前算起隔多长时间开始执行.这个相对时间是已 1/100 纳秒为单位的, 譬如赋值 3*10000000 相当于 3 秒.1 s(秒) = 1,000 ms(毫秒);1...
<< 21 22 23 24 25 26 27 28 29 30 >>