linux线程
智渝
生无路而勤为径
展开
-
<linux线程>同步互斥机制之【条件变量】
一、概念理解1、条件变量是逻辑稍复杂一点的同步互斥机制,它必须与互斥锁一起使用。2、条件变量用于线程间,等待某一条件发生(和信号类似),它可以将线程从某种睡眠等待中唤醒。3、条件变量利用线程间共享的资源(一般是全局变量)进行同步的一种机制。总体来说:条件变量就是利用线程间共享资源的状态变化的通信。当一个线程的某个行为需要对共享资源的状态改变才能执行,这时就用条件变量。二原创 2017-09-20 09:50:21 · 666 阅读 · 1 评论 -
<linux线程>POSIX无名信号量的基本操作---两个线程间的通信
POSIX无名信号量的基本使用步骤:(1)在线程都能访问到的区域定义信号量变量(如全局变量),类型是sem_t。(2)在任何线程使用它之前,用sem_init()初始化它。(3)使用sem_wait()/sem_trywait()和sem_post()来分别进行P操作,V操作。(4)不再需要时,使用sem_destroy()来销毁它。#include #inclu原创 2017-09-19 15:19:58 · 700 阅读 · 0 评论 -
<linux线程>同步互斥机制之【读写锁】
1、为什么要引入读写锁?假如要保护的共享资源在绝大多数的情况下是读操作,使用互斥锁就会导致这些本可以一起读的线程阻塞在互斥锁上,资源得不到最大的利用。而引入读写锁,则可以读写操作同时进行,只有写操作才需要互斥,因此如果能根据访问的目的来分别加读锁(可以重复加)或写锁(只允许一次一个),就能大大提高效率。2、对读写锁的操作与互斥锁一样,无非是定义、初始化、上锁、解锁、销毁锁。不过原创 2017-09-19 16:51:00 · 564 阅读 · 0 评论 -
<linux线程>同步互斥机制之【互斥锁】
如果信号量的值最多为1,那实际上相当于一个共享资源在任意时刻最多只能有一个线程在访问,这样的逻辑称为“互斥”。这时,有一种更加方便和语义更加准确的工具来满足这种逻辑---互斥锁。几个线程同时去抢一个锁,谁抢到了锁就进门把房间锁上,访问数据,出来后之前解锁。照这样的逻辑,互斥锁的操作无非就是:1.定义互斥锁。-----pthread_mutex_t类型2.初始化锁。--------pth原创 2017-09-19 16:35:28 · 579 阅读 · 0 评论