摘要: Mutex 作为系统核心对象是可以跨进程的(临界区就不行), 我们可以利用互斥对象禁止程序重复启动. 工作思路: 先用 OpenMutex 尝试打开一个自定义名称的 Mutex 对象, 如果打开失败说明之前没有这个对象存在; 如果之前没有这个对象, 马上用 CreateMutex 建立一个, 此时的程序应该是第一次启动; 再重复启动时, 那个 OpenMutex 就有结果了, 然后强制退出. ... 阅读全文
posted @ 2009-02-13 23:06 万一 阅读(9519) 评论(11) 推荐(0) 编辑
摘要: 原理分析: 互斥对象是系统内核对象, 各线程都可以拥有它, 谁拥有谁就能执行; 执行完毕, 用 ReleaseMutex 函数释放拥有权, 以让其他等待的线程使用. 其他线程可用 WaitForSingleObject 函数排队等候(等候也可以理解为排队申请). 使用过程: var hMutex: THandle; {应该先声明一个全局的互斥句柄} CreateMutex ... 阅读全文
posted @ 2009-02-13 21:25 万一 阅读(13977) 评论(33) 推荐(1) 编辑
摘要: 一下子跳到等待函数 WaitForSingleObject, 是因为下面的 Mutex、Semaphore、Event、WaitableTimer 等同步手段都要使用这个函数; 不过等待函数可不止 WaitForSingleObject 它一个, 但它最简单. function WaitForSingleObject( hHandle: THandle; {要等待的对象句柄} ... 阅读全文
posted @ 2009-02-13 15:07 万一 阅读(28218) 评论(6) 推荐(2) 编辑