我是否需要锁才能同时使用同一应用程序两次写入套接字



如您所知,写入不同线程之间的共享内存需要锁(互斥,信号量......

我的C++程序负责填充SO_SNDBUF并将数据写入套接字(作为限制网络的一部分)。

在这里,您可以找到代码的相关部分:

getsockopt(sendsockfd, SOL_SOCKET, SO_SNDBUF, &sndBufferSize, &sbsLen);
...
write(sendsockfd,buffer,sndBufferSize);

当我在同一台PC上同时运行该程序两次时(即它变成了具有两个不同套接字的两个不同应用程序),关于写入缓冲区,它是否被视为共享内存tcp_wmem?因此,我应该使用锁进行书写吗?

附言我正在使用阻止模式。

不,在这种情况下,您不应该使用锁进行写入。 想一想:如果两个不同公司编写的两个程序需要在写入独立套接字之前锁定,他们将如何在同一台机器上工作?

即使写入同一程序中的两个单独的套接字也不需要锁定。

最新更新