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

求助,GCC中关于互斥锁的问题

    来源: 互联网  发布时间:2016-08-14

    本文导语:  如果在加锁与解锁中间有SLEEP,则第一个获取锁的线程将会一直占有锁,直到其退出,其它线程才会进入该锁。 pthread_mutex_t g_lock; void LockFun() {     pthread_mutex_lock(&g_lock);     usleep(10000);     pthread_mutex_unlock(&g_l...

如果在加锁与解锁中间有SLEEP,则第一个获取锁的线程将会一直占有锁,直到其退出,其它线程才会进入该锁。

pthread_mutex_t g_lock;

void LockFun()
{
    pthread_mutex_lock(&g_lock);
    usleep(10000);
    pthread_mutex_unlock(&g_lock);
}

有2个线程thread1, thread2调用该函数,如
threadfun()
{
   while(1)
   {
      LockFun();
   }
}

main()
{
  pthread_mutex_init(&g_lock, 0);
  thread1-->create();
  thread2-->create();
  while(1)
  {
     usleep(10000);
  }
  pthread_mutex_destroy(&g_lock);
}

运行的结果是线程1不断的调用函数,而线程2就挂在pthread_mutex_lock(&g_lock)上也不返回,直到线程1中止,线程2才进入到函数里,这是为什么啊,能不能让它像WINDOWS下的锁一样,有一个排队的优先级。

|
sleep不一定是好方法,看看我的帖子中说的
http://topic.csdn.net/u/20100317/10/ffb0994d-ea2d-49b4-94c6-ecf8aef1ca31.html
说的很清楚了

|
。。。

我现在虚拟机正在重装,无法验证你的代码。

但是,应该是这种情况:

void LockFun()
{
pthread_mutex_lock(&g_lock);
usleep(10000);
pthread_mutex_unlock(&g_lock);
}
中,usleep完之后,unlock了,线程而就可以进去了。

sleep()的过程中,该线程被挂起了,暂时失去了CPU,但是线程2此时就算得到CPU,他也没法继续运行,

因为没有得到锁,只有得到锁的情况下,才会继续往下走。

|
up

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • module的问题.版本问题 求助
  • 【求助】iplanet问题,求助高手解答! iis7站长之家
  • 求助~~求助 ~~linux文件读写问题
  • 求助! 又出现问题了!
  • 一个简单的问题,高分求助!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • socket实现多文件并发传输,求助多线程实现问题?
  • 各位大侠,求助一个关于ubuntu系统的问题
  • 100分求助,Ubuntu安装问题
  • linux的 iptables问题求助
  • 100分求助:关于linux下配置sendmail的问题
  • 急求助!安装linux后重装windows的问题
  • 求助关于__cdecl的使用问题
  • 求助: 在ubuntu11.04上的有线连接问题
  • 急!!!小弟刚刚接触linux 在线求助<很简单的问题>
  • 求助: RedHat as4 内网正常,无法访问外网的问题!
  • 高分求助网卡问题,只要意见合理,即使解决不了问题,同样散分
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • (高分求助)请问,那里有软件开发的<设计文档>


  • 站内导航:


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

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

    浙ICP备11055608号-3