将来自多个线程的函数调用写入同一个套接字
安全吗?我们想在它们之间添加同步吗?是否会导致应用程序从网络层延迟写入/读取到应用程序层等问题
我们在 Linux Redhat Enviornment 上使用 GNU C++ 库 GCC 4
这是一个服务器端进程,其中服务器和客户端之间只有 1 个套接字连接 服务器和客户端位于 2 台不同的机器上 数据从服务器发送到客户端 客户端到服务器
问题1-当服务器向客户端发送数据时(多个线程通过同一个单套接字向客户端写入数据)但是从某些线程写入的数据没有到达客户端它甚至没有到达相同的网络层机器(Tcpdump 没有该数据)
问题 2-当客户端向服务器发送数据时客户端发送的数据显示在服务器的 TCPdump 中未收到服务器应用程序,该服务器应用程序在循环中使用“读取”和“选择”函数从单个线程读取套接字
我们无法确定发生这些问题的模式 我们认为当有这么多多个线程写入同一个套接字时会发生这种情况 我们没有同步写入函数,希望操作系统正在处理同步