使用pthread互斥锁定关键区域?

时间:2014-01-11 15:52:35

标签: c pthreads mutex

假设我有一个多线程程序,它有几个共享的全局变量,用于线程函数的严格部分。

我的问题是:我是否只能声明一个锁并在整个程序中使用?

我的意思是......当我锁定一段代码时,我只是阻止其他线程执行该特定的代码块...或者我是否阻止执行需要获取代码的所有其他代码块锁?

摘要:我是否需要为每个不同的关键区域声明一个锁?

我希望我有道理......我仍然对这些概念不熟悉

2 个答案:

答案 0 :(得分:0)

  

或者我是否阻止执行需要获取锁定的所有其他代码块?

是的,就是这样。无论任何线程执行什么代码,它都会阻塞互斥锁,直到可以获取它为止。

答案 1 :(得分:0)

应保护共享资源免受并发访问。因此,您可以为每个资源使用一个互斥锁。

在您的情况下,资源只是一个全局变量。

当然,您可以使用相同的互斥锁保护多个资源,但这往往效率低下,因为代码段可能会被阻止,尽管它们不需要。