b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

mutex用法_pthread mutex init_createmutex

电脑杂谈  发布时间:2017-01-04 09:04:00  来源:网络整理

pthread mutex init_mutex用法_createmutex

Mutex物件的做法与特性如下:

使用CreateMutex()来产生一个Mutex物件,而传入的Mutex名称字串用以区别不同的Mutex

,也就是说,不管是哪个Process/Thread,只要传入的名称叁数是相同的一个字串,那

CreateMutex()传回值(hMutex, handle of Mutex)会指向相同的一个Mutex物件。mutex用法这和

Event物件相同。然而Mutex和Event有很大的不同,Mutex有Owner的概念,如果Mutex为

ThreadA所拥有,那麽ThreadA执行WaitForSingleObject()时,并不会停下来,而会立即

传回WAIT_OECT_0,而其他的Thread执行WaitForSingleObject()则会停下来,直到Mutex

的所有权被Release出来或Time Out。而Thread如何取得Mutex的所有权呢?主要如下:

1.CreateMutex(Byval 0, 1, "MyMutex") 第二个叁数传1进去,则第一个呼叫CreateMutex

mutex用法_createmutex_pthread mutex init

且第二个叁数传1的Thread会拥有该Mutex。mutex用法但如果第二个叁数传0进去,那代表

CreateMutex时,没有人拥有该Mutex。

2.承上的说明,如果Mutex没有拥有者,则第一个呼叫WaitForSingleObject的Thread

会拥有该Mutex。

上面说过,只有拥有该Mutex的Thread在执行WaitForSingleObject()不会停下来,其他的

Thread则会停下来,那其他的Thread如何取得该Mutex的所有权呢?那必需是原先拥有该

Mutex的Thread以ReleaseMutex来放弃所有权,一旦所有权放出来,而有其他的Thread处

於WaitForSingleObject()的停留等待状态,则有一个Thread会即时取得该Mutex的所有权

(上面第2点的说明),所以,若其他的Thread也执行WaitForSingleObject()时,就会处於

等待的状态。正因WaitForSingleObject()会令Mutex处於UnSignal的状态(和Event不同),

所以可以完成同一时问只有一个thread来UpDate共用记忆体的需求(当然大家都要使用Mutex

的规则则来做,即想Update时,要使用WaitForSingleObject()来看看是否可取得Mutex的所

有权。)

另有一件事要特别提出,如果一个Thread已取得Mutex的所有权,而它呼叫WaitForSingleObject()

n 次,则也要使用ReleaseMutex n次才能够将Mutex的拥有权放弃,这和Event也不同,而

且,非Mutex拥有者呼叫ReleaseMutex也不会有任何作用。而每次以WaitForSingleObject

呼叫一次,Mutex会有一个计数器会加一,ReleaseMutex成功会减一,直到Mutex的计数

器为0之後,系统才会将之去除。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-24577-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 何彪
        何彪

        1

      • 贾中亮
        贾中亮

        要是美帝能保证伊国领土不被伊凡份子攻占

        • 完颜亶
          完颜亶

          特工在我国从事反华活动吗

      • 严公弼
        严公弼

        布什布莱尔无缘无故入侵伊拉克害死了数万伊拉克百姓

      热点图片
      拼命载入中...