路漫漫其修远兮,吾将上下而求索
经验浅薄,耐心积累;记性不好,记诸文字
BlogJava
首页
新随笔
联系
聚合
管理
随笔-204 评论-149 文章-0 trackbacks-0
POSIX线程和信号量小结
信号量
基本操作
#include
<
semaphore.h
>
int
sem_init(sem_t
*
sem,
int
pshared, unsigned
int
value);
int
sem_wait(sem_t
*
sem);
/**/
/*
P(sem), wait(sem)
*/
int
sem_post(sem_t
*
sem);
/**/
/*
V(sem), signal(sem)
*/
int
sem_getvalue(sem_t
*
sem,
int
*
sval);
int
sem_trywait(sem_t
*
sem);
int
sem_destroy(sem_t
*
sem);
/**/
/*
undo sem_init()
*/
/**/
/*
named semaphores - these are less useful here
*/
sem_t
*
sem_open(
);
int
sem_close(sem_t
*
sem);
int
sem_unlink(
const
char
*
name);
互斥量
基本操作
#include
<
pthread.h
>
int
pthread_mutex_init(pthread_mutex_t
*
mutex, pthread_mutexattr_t
*
attr);
pthread_mutex_t mutex
=
PTHREAD_MUTEX_INITIALIZER;
int
pthread_mutex_lock(pthread_mutex_t
*
mutex);
int
pthread_mutex_unlock(pthread_mutex_t
*
mutex);
int
pthread_mutex_trylock(pthread_mutex_t
*
mutex);
int
pthread_mutex_destroy(pthread_mutex_t
*
mutex);
条件变量
一种信号机制
基本操作
#include
<
pthread.h
>
int
pthread_cond_init(pthread_cond_t
*
cond, pthread_condattr_t
*
attr);
pthread_cond_t cond
=
PTHREAD_COND_INITIALIZER;
int
pthread_cond_wait(pthread_cond_t
*
cond, pthread_mutex_t
*
mutex);
int
pthread_cond_signal(pthread_cond_t
*
cond);
int
pthread_cond_timedwait(
);
int
pthread_cond_broadcast(pthread_cond_t
*
cond);
int
pthread_cond_destroy(pthread_cond_t
*
cond);
互斥量A保护条件变量B
//
等待方
pthread_mutex_lock(
&
A);
while
(
)
{
//
检查条件是否满足
pthread_cond_wait(
&
B,
&
A);
}
/**/
/*
wait会隐式解锁A
*/
/**/
/*
wait后A会被隐式锁住A
*/
pthread_mutex_unlock(
&
A);
//
通知方
pthread_mutex_lock(
&
A);
pthread_cond_signal(
&
B);
pthread_mutex_unlock(
&
A);
posted on 2009-07-05 01:02
Frank_Fang
阅读(604)
评论(0)
编辑
收藏
所属分类:
Linux | ACE网络编程
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
Posix线程编程指南(5)杂项
Posix线程编程指南(4)
Posix线程编程指南(3)线程同步【转】
Posix线程编程指南(2)线程私有数据【转】
Posix线程编程指南(1)线程创建与取消【转】
void类型和void *指针类型(网上摘抄总结)【转】
线程同步:何时互斥锁不够,还需要条件变量?
POSIX thread (pthread) 简介
POSIX线程和信号量小结
Linux下进程的各种状态
<
2009年7月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
(204)
Andriod(2)
bcel javassist(9)
C++编程(23)
Design Pattern(36)
JAVA WS(16)
Java 网络编程(1)
Java编程(44)
JNI(1)
Linux | ACE网络编程(13)
Python学习(4)
SSH+JQuery+DWR(39)
数据结构与算法(12)
笔试,面试经验(4)
随笔档案
(100)
2009年8月 (17)
2009年7月 (21)
2009年6月 (21)
2009年5月 (32)
2009年4月 (9)
收藏夹
(8)
牛人博客文章链接(8)
牛人博客链接
搜索
最新评论
1. re: Java transient关键字[未登录]
@AlexSeeker
volatile屏蔽了重排序优化
--aa
2. re: Java transient关键字
评论内容较长,点击标题查看
--333
3. re: Java transient关键字
555
--55
4. re: Java transient关键字
很不错。
--seancheer
5. re: Java Serializable小结
过来看看
--vacon
阅读排行榜
1. Java transient关键字(110465)
2. Struts 注解配置例子及redirect,redirectAction,chain的区别(25201)
3. static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?(18076)
4. Java多线程sleep(),join(),interrupt(),wait(),notify()(12790)
5. 线程同步:何时互斥锁不够,还需要条件变量?(9210)
评论排行榜
1. Java transient关键字(26)
2. 【转】用 BCEL 设计字节码(7)
3. Struts 注解配置例子及redirect,redirectAction,chain的区别(6)
4. Java 内存模型及 volatile关键字语义(5)
5. Java多线程sleep(),join(),interrupt(),wait(),notify()(5)