
Unix/Linux系统编程
月朗风清扬
这个作者很懒,什么都没留下…
展开
-
线程同步—互斥锁
个人总结,请各位审慎的,批判着看。 当两个线程访问共享数据时,可以用互斥锁来进行同步。先看一个例子: 该程序有两个线程,一个用来从键盘读取输入的数据,一个把读取的数据显示出来。其中,数组buffer为两个线程的共享数据。 编译:gcc mutex_pthread.c -lpthread,不要忘记-lpthread。 运行该程序,在键盘上输入数据,然后把数据显示出来。读原创 2017-02-03 14:17:57 · 428 阅读 · 0 评论 -
线程同步—互斥锁+条件变量
在《线程同步—互斥锁》一文中,我们分析了只用互斥锁同步线程的弊端——CPU的效率和时效性不可兼得。下面,我们通过使用条件变量,在保证CPU效率的前提下,提高程序的时效性。 只用互斥锁同步线程,其CPU占用率之所以高,是因为线程需要轮询,即需要不停的检查条件是否满足。我们使用条件变量,当条件不满足时,使线程阻塞。一旦条件满足,就会解除阻塞,继续往下执行。这样,线程就不需要轮询了,因此不需要占用原创 2017-02-03 16:11:54 · 305 阅读 · 0 评论 -
线程同步—信号量(闭环控制)
本文提供一个用信号量对线程实现闭环控制的程序,该程序只是为了演示信号量的作用,并没有实用价值。 程序的逻辑很简单,类似于数字电路中的时序图。在main()中触发一下,程序就会进入闭环控制了。上个图就一目了然了。 代码如下: #include #include #include sem_t sem1,sem2,sem3; void *thread_a(void*in) {原创 2017-02-03 16:55:16 · 380 阅读 · 0 评论