2024年4月28日发(作者:)
qt4的 qthread sleep机理 条件变量
在qt4的《从qthread到sleep》一文中我们了解了线程的基本
使用,但是有一大部分的内容当时说要放到这片文章里讨论,那就是
线程的同步问题。关于这个问题,在《从进程到线程》中有一个比喻,
有必要重新放在下面温习下:
用一个比喻来总结下条件变量:
1.一个进程就好比一个房子里有一个人;
2.clone创建线程就相当于在这个房子里添加一个人;
3.fork创建进程就相当于再造一个房子,然后在新房子里添加
一个人。
有了上面的比喻后,我们就清楚很多了:
1.线程之间有很多资源可以共享:比如厨房资源、洗手间资源、
热水器资源等;
2.而对于进程来说,一个概念就是进程间通信(你要和另外一
个房子里的人通信要比一个房子里的两个人之间通信复杂);
3.线程之间因为共享内存,所以通过一个全局的变量就可以交
换数据了;
4.但与此同时,对于线程来说,又有新的概念产生了:
① 一个人使用洗手间的时候,得锁上以防止另一个人对洗手间
的访问;
② 一个人(或几个人)睡觉的时候,另外一个人可以按照之前
约定的方式来叫醒他;
③ 热水器的电源要一直开着,直到想洗澡的人数减为0;
发布评论