您的位置:首页 > 运维架构 > Linux

linux下线程通信相关函数

2016-12-02 19:43 281 查看
进程是最小的资源分配和管理的单位

线程是最小的调度单位

 

进程:每个进程拥有独立的地址空间,顺序执行某些任务,阻塞会影响下面执行的代码,上下文切换比较消耗资源。

线程:共享进程的地址空间,是把进程细分为更小的执行单元,拥有时间片的函数,切换过程节省资源。

 

线程:拥有独立堆栈,ID,errno,寄存器pc。

 

Pthread库:sudo apt-get install  manpages-posix-dev

 

创建线程:pthread_create(线程ID,创建属性(默认NULL),线程函数,给线程传参);成功返回0.

阻塞等待线程退出:pthread_join(线程ID,退出状态); 成功返回0;

退出线程:pthread_exit(退出状态);只能使当前线程退出。

                            Pthread_cancel(线程ID);指定退出某个线程。

 

同步:按照约定的顺序依次执行某些任务。

互斥:同一时刻只能有一个线程或者进程占用资源。

 

同步:信号量(无名信号量),条件变量。

信号量:sem_init(信号量ID,0(无名信号量),资源的数量): 初始化信号量

                   sem_wait();  申请资源,资源数目-1.

                   操作资源

                   sem_post();  释放资源,资源数量+1.

        

 

互斥:二值信号量,完成了锁的功能

互斥锁

         Pthread_mutex_init(锁ID,锁属性(默认NULL)); 初始化锁。

         Pthread_mutex_lock();  申请资源,申请锁

         操作资源

         Pthread_mutex_unlock();释放资源。

 

条件变量:另一种同步方式,配合锁来使用。

条件变量进入wait的原子操作方式:1.解锁,2.等待,3.加锁

                   pthread_cond_init(),初始化条件变量

                   pthread_cond_wait():等待资源

                   pthread_cond_signal():释放资源

                   pthread_cond_broadcast():广播
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: