互斥锁的实现

who_123 2012-11-20 01:36:08
请问若给出信号量函数如何实现线程互斥锁?
如给出 int sem_init (sem_t *sem, int pshared, unsigned int value);及sem_destroy(sem_t *sem);sem_wait( sem_t *sem );sem_post( sem_t *sem );如何实现互斥锁的初始化,销毁,加锁,解锁呢?
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwersss 2012-11-20
  • 打赏
  • 举报
回复
pthread_mutex_init(mutex, NULL); pthread_cond_init(cond, NULL); pthread_mutex_lock(mutex); pthread_mutex_unlock(mutex); pthread_mutex_destroy(mutex); pthread_cond_wait(cond, mutex); pthread_cond_signal(cond); pthread_cond_destroy(cond);
nevil 2012-11-20
  • 打赏
  • 举报
回复
sem_t sem; sem_init(&sem, 0, 1) <==第二个参数指定为0就可以在线程间互斥了
linlan999 2012-11-20
  • 打赏
  • 举报
回复
说白了,就是一个变量; init的时候,赋值该变量为一个值,通常为1(取决于资源的情况); wait 查看该变量是否为1,若不为1,则说明被锁,需要等待,直到为1,一旦为1将其值-1,当然也可以立即返回一个表示获得mutex失败的值; post 就是在使用完Mutex后 对该变量+1操作; destory 吗? 删除该变量,比如该变量位于使用malloc() 获得的RAM,则destory可以free()该块儿RAM; 可以这么搞吧?
who_123 2012-11-20
  • 打赏
  • 举报
回复
顶一下 是不是我发错区了
who_123 2012-11-20
  • 打赏
  • 举报
回复
顶一下 怎么都没有人回答啊
who_123 2012-11-20
  • 打赏
  • 举报
回复
引用 3 楼 nevil 的回复:
sem_t sem; sem_init(&sem, 0, 1) <==第二个参数指定为0就可以在线程间互斥了
那初始化锁,销毁锁,加锁,解锁这个怎么实现呢?

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧