如果我需要同步两个在特定套接字上都调用send()函数的线程,那么在send()函数上扭曲一个关键部分或者使用互斥量会更有用吗? (因为套接字是一个内核对象)
答案 0 :(得分:4)
假设Windows平台(我们可以在关键部分和互斥体之间进行选择)。
Mutex(CreateMutex
)速度慢:锁定和解锁始终是系统调用,即使没有争用。但是,send
的成本可能足以使这种差异无法察觉。
正如另一个答案所指出的,互斥体可以在进程之间共享(如果命名/重新打开或继承),关键部分是进程本地的。
答案 1 :(得分:1)
我假设这是关于Windows的(不记得在其他地方看到关键部分)。
如果所有锁定都在一个进程中,那么您使用哪个同步对象并不重要。如果要锁定进程边界,则应使用互斥锁,因为临界区仅在单个进程内工作,但命名的互斥锁可以在多个进程之间共享。
答案 2 :(得分:-2)
我认为,互斥量应该更快。