上一篇博客讲到了如何创建线程并使用线程,这一篇将讲解线程同步的操作!
目录
一、线程同步 ----- 互斥对象
二、线程同步 ----- 事件对象
三、线程同步 ----- 信号量
四、线程同步 ----- 关键代码段
1. 没有使用关键代码段的效果
2. 有关键代码段的效果
五、线程同步 ----- 关键代码段 之 线程死锁
六、总结
一、线程同步 ----- 互斥对象
(内核级别)
互斥对象(mutex)属于内核对象,它能够确保线程拥有对单个资源的互斥访问权。
互斥对象包含一个使用数量,一个线程ID和一个计数器。其中线程ID用于标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数。
创建互斥对象:调用函数CreateMutex。调用成功,该函数返回所创建的互斥对象的句柄。
请求互斥对象所有权:调用函数WaitForSingleObject函数。线程必须主动请求共享对象的所有权才能获得所有权。
释放指定互斥对象的所有权:调用ReleaseMutex函数。线程访问共享资源结束后,线程要主动释放对互斥对象的所有权,使该对象处于已通知状态。
简单来讲,互斥对象就是,同一个内存变量,当线程一在操作他时,线程二就无法进行操作,得等到线程一不操作它了,线程二才可以进行操作它!
————————————————
版权声明:本文为CSDN博主「cpp_learners」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cpp_learner/article/details/120420720