工作中学习
文章平均质量分 51
希帅哥
勿忘初心,方得始终。长风破浪会有时,直挂云帆济沧海!
展开
-
用条件变量来解决生产者消费者问题
在上一篇文章中,我使用了匿名信号量什么是条件变量? 我们可以设想一个场景:线程A需要某个条件成立才能继续执行,否则一直等待下去,而线程B执行过程中使线程的执行条件成立,并且唤醒A。 举个例子,在生产者消费者模型中,消费者如果看到缓冲区为空时,就等待,而生产者往缓冲区添加完数据后,唤醒消费者。 其中这个场景中,可以POSIX的条件变量来实现。 以下是条件变量所需要的函数pth原创 2015-08-11 23:09:15 · 3317 阅读 · 1 评论 -
生产者消费者问题 伪代码和C语言多线程实现
生产者消费者问题是操作系统中的一个经典的问题。他描述的是一个,多个生产者与多个消费者共享多个缓冲区的事情,具体的定义百度。然后看了操作系统的书籍如何解决书上给的伪代码是这样的item B[k];semaphore empty; empty=k; //可以使用的空缓冲区数semaphore full; full=0; //缓冲区内可以使用的产品数semaphore mut原创 2015-08-11 22:00:22 · 12363 阅读 · 1 评论 -
一个简单的线程池
最近自己,很烦所以超级久没学习了,今天趁着抗战七十周年放三天假,赶紧看下书。 废话不多说。 今天,介绍一个简单的线程池。 首先说明什么是线程池,线程池:是包含若干个线程,来处理多个任务的线程集合。 它的目的是用来处理,大量的相对短暂的任务。这里我们先来解释下两个概念,什么叫大量呢?对于线程来说,需要线程数小于任务数,第二,短暂的任务是指,任务需要相对短暂,如果线程和主进程同周原创 2015-09-05 02:57:08 · 534 阅读 · 0 评论