Linux用户态的信号量
来源:互联网 发布:课外阅读训练软件 编辑:程序博客网 时间:2024/05/18 00:43
信号量的数据类型为结构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
- Linux用户态的信号量
- linux 内核信号量 用户态信号量 详解
- linux 内核信号量 用户态信号量 详解
- 用户态的信号量
- linux信号量简介(用户态)
- Linux信号量的用法
- Linux的信号量
- linux 信号量的使用
- Linux信号量的实现
- Linux 下的信号量
- linux的信号量通信
- Linux信号量的测试
- linux下的信号量
- linux下的信号量
- Linux下的信号量
- linux的信号量操作
- [转]linux信号量的实现
- linux/unix信号量的值
- AIX下nfs故障导致oracle process hang
- Django Error: No module named blog(转)
- 千姿百态项目经理3——“牛X”项目经理4
- Windows 系统Administration 账户登录密码修改
- 安装 Ubuntu 10.04 Linux,插入耳机后,没反映,可是笔记本的喇叭里有声音(试过,有效)
- Linux用户态的信号量
- Python+Django初学者问题集
- 使用EXPDP IMPDP传输不同数据库的不同表空间(新增网络传输)
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- qt4.8.2在tq2440开发板上的移植(二)--构建根文件系统
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- CTime类
- AJISky's CM_One详解
- 过程是数据库对象