WaitForSingleObjec(2)

来源:互联网 发布:获取股票交易明细数据 编辑:程序博客网 时间:2024/05/01 09:31

这里你就要创建一个对象,这个对象有两个状态,我们约定,如果一个线程要写入文件之前就把这个对象状态变成0,写完之后把它变回1,那么另一个线程在写文件之前只要检测这个对象是不是为0就可以确定文件有没有被另一个线程在写入了。

检测的过程就用WaitForSingleObject来操作,如果为1,WaitForSingleObject就和没这句话一样立刻执行下去了,如果那个对象是个0,那么WaitForSingleObject就会停在这里等,等到另一个线程写完文件,因为那个线程在写完文件之后会把对象变成1。

这个状态1我们命名为有信号状态,状态0我们称无信号状态。我们就把这个对象叫做互斥体,他起到了对这个文件读写的互斥作用。

这整个写文件之前之后改变互斥体状态,写之前检测互斥体状态这个过程就是一个线程的同步。

同步是编程的人自己要考虑的问题,系统不会帮你同步,也就是说我们进行了上述的约定之后,你在编程的时候必须要在写入文件之前将互斥体置为无信号状态,写完之后置为有信号状态。
0 0