Linux多线程
文章平均质量分 83
Legendary_life
这个作者很懒,什么都没留下…
展开
-
线程同步
线程同步互斥量:从本质上是一把锁,在访问共享资源前对互斥量加锁,在访问完后解锁,对互斥量加锁后任何其他试图再次对其加锁都会被阻塞,知道当前线程对互斥量解锁。互斥量初始化1)静态初始化将互斥量设置为PTHREAD_MUTEX_INITIALIZER或者调用怕pthread_mutex_init函数2)动态初始化#includeint pth原创 2015-08-10 16:15:52 · 358 阅读 · 0 评论 -
线程私有数据实现的原理
在维护每个线程的私有数据的时候,我们可能会想到分配一个保存线程数据的数组,用线程的ID作为数组的索引来实现访问,但是有一个问题是系统生成的线程ID不能保证是一个小而连续的整数,并且用数组实现的时候由于其他线程也可以访问其数组中的数据,这样会引起数据混乱。这时候我们可以借助线程的私有数据来解决这个问题。 线程私有数据实现的主要思想是:在分配线程私有数据之前,创建与该数据相关联的健,转载 2015-08-10 17:23:53 · 1663 阅读 · 0 评论 -
线程私有数据
线程私有数据创建私有数据之前得先创建一个键,需要创建与该数据相关联的键#includeint pthread_key_create(pthread_key_t *keyp, void (*destructor)(void *));成功--0,出错--返回错误编号参数;keyp -- 存储创建的键,可以被任何线程使用,但每个线程把这个键和不同的线程私有数据地址进行关联原创 2015-08-10 19:27:13 · 358 阅读 · 0 评论 -
经典同步问题--读者和写者问题
读者--写者问题读者--写者问题是互斥问题的一个概括。一组并发的线程要访问一个共享的对象,例如一个主存中的数据结构,或者是磁盘上的数据库。有些线程只读对象,其他线程只修改对象。只读对象的线程叫做读者,修改对象的线程的对象叫做写者。写者必须拥有对对象的独占的访问,而读者可以和其他读者共享对象。按照读者和写者的优先级分为两类问题:一、读者优先读者优先,要求不要读者等待,原创 2015-09-03 20:23:31 · 2575 阅读 · 1 评论 -
经典同步问题--生产者和消费者
生产者--消费者问题 生产者和消费者线程共享一个有n个槽的有限缓冲区。生产者生产的新项目不断插入有限缓冲区,消费者不停地从缓冲区取出项目。这里涉及操作共享变量的同步问题 还有有限缓冲区的问题,操作共享缓冲区时,需要设置互斥变量让线程同步;缓冲区满的时候生产者停止生产,等待缓冲区有空间;缓冲区空的时候,消费者不能忘缓冲区取,等待缓冲区有产品。图文示例原创 2015-09-03 17:33:16 · 731 阅读 · 0 评论 -
线程原语
线程原语比较两个线程是否相等#includeint pthread_equal(pthread_t tid1,pthread_t tid2);相等--非0,否则-- 0获得自身的线程ID#includepthread_t pthread_self(void);创建线程#includeint pthread_create(pthread_原创 2015-08-10 11:31:21 · 494 阅读 · 0 评论