sem_init sem_post sem_destroy信号量介绍
来源:互联网 发布:程序员 判刑 编辑:程序博客网 时间:2024/05/21 04:22
信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函数sem_init()用来初始化一个信号量。它的原型为:
extern int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value));
sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享;value给出了信号量的初始值。
函数sem_post( sem_t *sem )用来增加信号量的值。当有线程阻塞在这个信号量上时,调用这个函数会使其中的一个线程不在阻塞,选择机制同样是由线程的调度策略决定的。
函数sem_wait( sem_t *sem )被用来阻塞当前线程直到信号量sem的值大于0,解除阻塞后将sem的值减一,表明公共资源经使用后减少。函数sem_trywait ( sem_t *sem )是函数sem_wait()的非阻塞版本,它直接将信号量sem的值减一。
函数sem_destroy(sem_t *sem)用来释放信号量sem。
信号量用sem_init函数创建的,下面是它的说明:
#include<semaphore.h>
这两个函数控制着信号量的值,它们的定义如下所示:
#include <semaphore.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <semaphore.h>
sem_t bin_sem;
void *thread_function1(void *arg)
{
}
void *thread_function2(void *arg)
{
}
int main()
{
}
sem_init
thread_function1
thread_function1--------------sem_wait
sleep
thread_function2--------------sem_post
sem_wait
sem_post
- sem_init sem_post sem_destroy信号量介绍
- sem_init sem_post sem_destroy信号量介绍
- sem_init sem_post sem_destroy信号量介绍
- 信号量sem_t\sem_init\sem_post\sem_wait\sem_destroy
- 信号量sem_init,sem_wait,sem_post
- sem_init,sem_post,sem_wait 信号量的用法解释
- sem_init,sem_post,sem_wait 信号量的用法解释
- 多线程使用信号量sem_init,sem_wait,sem_post
- sem_init,sem_post,sem_wait 信号量的用法解释
- 多线程使用信号量sem_init,sem_wait,sem_post
- 线程同步之信号量(sem_init,sem_post,sem_wait)
- 线程同步之信号量(sem_init,sem_post,sem_wait)
- sem_init sem_post sem_wait
- 信号量sem_init
- 线程:信号量 sem_wait sem_post
- sem_wait,sem_post与信号量
- sem_wait sem_post信号量
- 内存信号量sem_init函数解析
- Retrofit+RxJava学习笔记(1)
- 数据库事务隔离级别-- 脏读、幻读、不可重复读
- Linux Daemon & 单例模式 设计与实现
- 产品PRD文档撰写指南
- clisp 记录:6. 循环
- sem_init sem_post sem_destroy信号量介绍
- ios文件夹共享Files
- 计算机组成原理实验四:时序系统
- 生信宝典Linux学习系列文章整理
- 上传文件(lrzsz)
- elementUi的使用
- Anaconda3的使用
- for 循环作用域问题
- Android Jni OpenCv 利用Cany算子做边缘检测