如您所知,写入不同线程之间的共享内存需要锁(互斥,信号量......
我的C++程序负责填充SO_SNDBUF
并将数据写入套接字(作为限制网络的一部分)。
在这里,您可以找到代码的相关部分:
getsockopt(sendsockfd, SOL_SOCKET, SO_SNDBUF, &sndBufferSize, &sbsLen);
...
write(sendsockfd,buffer,sndBufferSize);
当我在同一台PC上同时运行该程序两次时(即它变成了具有两个不同套接字的两个不同应用程序),关于写入缓冲区,它是否被视为共享内存tcp_wmem
?因此,我应该使用锁进行书写吗?
附言我正在使用阻止模式。
不,在这种情况下,您不应该使用锁进行写入。 想一想:如果两个不同公司编写的两个程序需要在写入独立套接字之前锁定,他们将如何在同一台机器上工作?
即使写入同一程序中的两个单独的套接字也不需要锁定。