代码之家  ›  专栏  ›  技术社区  ›  NotGI

C语言中mutex_lock返回的顺序

  •  -1
  • NotGI  · 技术社区  · 8 年前

    假设有3个线程A、B和C。 和互斥X

    A在X上调用pthread_mutex_lock。

    B在X上调用pthread_mutex_lock。

    *

    C在X上调用pthread_mutex_lock。

    A在X上调用pthread_mutex_unlock。

    **

    现在谁将能够首先使用共享资源?B或C? 如果我尝试在*中使用pthread_destroy_mutex会发生什么?在**?

    1 回复  |  直到 8 年前
        1
  •  2
  •   kaylum    8 年前

    Who will now be able to use the shared resource first?

    这取决于内核调度程序的实现。 Posix 这样说:

    如果互斥对象引用的互斥对象上有线程被阻塞 当调用pthreadmutexunlock()时,导致mutex变为 可用时,调度策略应确定哪个线程应 获取互斥体。

    And what happens if I try to use pthread_destroy_mutex in *? in **?

    再次从 manual :

    试图销毁锁定的互斥会导致未定义的行为。

    如果您对这些内容有任何进一步的疑问,建议咨询相关手册页。