假设我有一个多线程程序,它有几个共享的全局变量,用于线程函数的严格部分。
我的问题是:我是否只能声明一个锁并在整个程序中使用?
我的意思是......当我锁定一段代码时,我只是阻止其他线程执行该特定的代码块...或者我是否阻止执行需要获取代码的所有其他代码块锁?
摘要:我是否需要为每个不同的关键区域声明一个锁?
我希望我有道理......我仍然对这些概念不熟悉
答案 0 :(得分:0)
或者我是否阻止执行需要获取锁定的所有其他代码块?
是的,就是这样。无论任何线程执行什么代码,它都会阻塞互斥锁,直到可以获取它为止。
答案 1 :(得分:0)
应保护共享资源免受并发访问。因此,您可以为每个资源使用一个互斥锁。
在您的情况下,资源只是一个全局变量。
当然,您可以使用相同的互斥锁保护多个资源,但这往往效率低下,因为代码段可能会被阻止,尽管它们不需要。