1

如果我需要同步两个线程,这两个线程都在特定套接字上使用 send() 调用函数,那么扭曲 send() 函数的关键部分或研究使用互斥锁会更有用吗?(因为套接字是内核对象)

4

3 回答 3

4

假设 Windows 平台(这就是我们在临界区和互斥体之间进行选择的地方)。

Mutex (of CreateMutex) 要慢得多:锁定和解锁始终是系统调用,即使没有争用。不过,的成本send可能足以使这种差异不明显。

正如另一个答案所指出的,互斥锁可以在进程之间共享(如果命名/重新打开或继承),并且关键部分是进程本地的。

于 2013-01-16T13:43:53.713 回答
1

我假设这是关于 Windows 的(不记得在其他地方看到过关键部分)。

如果所有锁定都在一个进程中,那么使用哪个同步对象并不重要。如果要跨进程边界锁定,则应使用互斥锁,因为临界区仅在单个进程内有效,但命名互斥锁可以在多个进程之间共享。

于 2013-01-16T13:40:06.550 回答
-2

我认为,互斥锁应该工作得更快。

于 2013-01-16T13:36:49.547 回答