当前位置:  技术问答>linux和unix

锁是否可以在一个线程中加锁 而在另一个线程中解锁

    来源: 互联网  发布时间:2016-11-18

    本文导语:  如题, 是否可以在一个线程中调用pthread_mutex_lock(&g_pthread_mutex); 而在另一个线程中调用pthread_mutex_unlock(&g_pthread_mutex); 记忆中看到书上好像是说不可以,只有信号量可以跨线程,今天试了一下,好像可以,请教一下...

如题, 是否可以在一个线程中调用pthread_mutex_lock(&g_pthread_mutex);

而在另一个线程中调用pthread_mutex_unlock(&g_pthread_mutex);

记忆中看到书上好像是说不可以,只有信号量可以跨线程,今天试了一下,好像可以,请教一下锁是否可以跨线程使用?

|
理论上是可以的,

但你必须保证,pthread_mutex_lock 再第二次调用前, pthread_mutex_unlock必须被调用,

否则就会死锁。

|
本帖最后由 wenxy1 于 2011-03-31 16:34:27 编辑
很容易死锁,当这两个线程同时被持起时, very dangerous!

产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

    
 
 

您可能感兴趣的文章:

  • 浙ICP备11055608号-3 iis7站长之家
  • 在一个进程的主线程中如何判断自己创建的线程是否存在?
  • linux 下多线程 每个线程能否使用alarm来处理,信号是否会乱呢?
  • 请问在多线程得程序中,函数内的局部变量是否线程安全的
  • 小问题:在线程中调用sleep()使其睡眠的时候,此线程是否释放所占的资源?
  • linux下的c++如何判断线程是否结束?
  • linux下time函数是否线程安全
  • Linux怎样区分一个进程是否是线程啊?
  • 如何判断一个线程是否结束?
  • 单条汇编语句是否可能因线程切换而被打断?
  • perror()是否线程安全?
  • 如何判断线程是否存在?
  • 如何判断一个线程是否处于阻塞状态
  • 请问多个线程同时读写同一文件的操作是否安全?
  • 一个很菜的问题: DOS下是否可以实现多线程?
  • 通过线程 如可监控tomcat是否正常 重启tomcat
  • Linux的线程库pthread是否有"亲缘性"的概念?
  • linux c 多线程编程 system函数是否是可重入的!
  • linux平台usleep(time);函数是否是原子操作不能被CPU线程切换打断?
  • UX下如何判断线程是否还在运行?UX下如何在for循环进入死循环时,强行停止它(不再for中处理)?
  • 我是否可以在APPLET中加菜单
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问用jb7编写的程序是否可以超平台,即在win下写的程序是否可以在linux下运行?
  • unix中是否可以有第三个可以给用户用的信号?
  • socket是否可以同时读写
  • 请问怎么判断裸设备是否可以删除
  • 两个LINUX系统是否可以同时安装在一个硬盘上呢?
  • 是否可以降级编译内核?
  • java applet和servlet之间是否可以传递对象?
  • 急! 苹果分区是否可以支持大于2T的硬盘??
  • ls 命令是否可以分屏显示内容?
  • linux分区的大小是否可以改变
  • 急!哪位朋友在aix系统下配置过apache+tomcat ? 它所使用的apache+tomcat程序,是否可以用在linux下的程序是一样的 ? 在哪儿可以下载
  • 你是否可以回答Socket的问题?数据先后问题
  • 可不可以在DOS的批处理中间判断某个文件是否存在?
  • 请问valgrind是否可以编译到arm板上运行,谢谢!!
  • 是否可以在VI下直接运行make ?
  • 请问TOMCAT的LINUX包是否都可以在SCO UNIX中运行和安装
  • curses编程库中的form中的一个表单域是否可以设置多种颜色
  • Apache 上是否可以制定某目录为cgi目录?
  • /etc/hosts中添加的域名信息,用哪个命令可以测试添加的内容是否正确?
  • UNIX如何检查安装软件版本及是否可以升级
  • C++ Vectors 成员 empty():判断Vector是否为空(返回true时为空)
  • suse11 如何查看防火墙是否关闭,远程桌面是否开启,sshd和vsftpd这些服务是否开启?
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例
  • 请问Unix下是否有函数得知“指定文件是否被打开”?
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • 怎么知道自己的redhat linux 的端口是否已经开放,比如我想看看80和21端口是否开放?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • shell如何判断文件是否存在,如何判断变量是否为空
  • java实现判断字符串是否全是数字的四种方法代码举例
  • unix下如何判断一个文件夹是否存在?(也就是某个路径是否存在)
  • 程序员跳槽前需仔细思考:你是否做到以下10点?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3