c - 当两个线程尝试同时写入同一个 tcp 套接字时出现同步问题

标签 c windows sockets tcp network-programming

我有 20 个线程,所有线程都一次在单个 tcp 套接字上发送数据并接收数据。当我运行我的应用程序时,我没有看到任何同步问题,但根据我的理解,当两个线程同时尝试写入 tcp 套接字或一个线程正在写入而另一个线程正在读取时,可能会出现一些问题。

如果我的理解是正确的,为什么我没有遇到任何错误?

最佳答案

有时,即使您在过马路之前不向两边看,您仍然可以安全地到达街道的另一边。这并不意味着每次您这样做都会成功。

事情是这样的,你说“你没有看到任何同步问题”,但这只是因为它恰好做了你想让它做的事情。反过来——您看不到任何同步问题的原因是您碰巧希望它做它碰巧做的事情。希望它做其他事情的人看到相同代码的同步问题。

换句话说,您掷的硬币可能是正面,也可能是反面。你知道它不能保证会出现,你期望它会出现。它出现了。没有什么神秘之处——解释是你预料到它会发生什么。如果您期望其他东西,即使它做了完全相同的事情,它也不会按照您的期望完成。

关于c - 当两个线程尝试同时写入同一个 tcp 套接字时出现同步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17608945/

相关文章:

c - 在 C 中编写方法时遇到问题,包括指针和类型

Windows 上的 Java RS-232 通信

windows - WMIMethodException与.InstallProductKey

c - 如何遍历char指针来计算特定字符存在的类型数

c - fread() 和 read() 哪个更好?

windows - yarn global add 在 Windows 上损坏了吗?

c# - 通过套接字发送大型序列化对象仅在尝试增加字节数组时失败,但在使用大量字节数组时没问题

java - Java检测系统中某个socket是否与某个url连接

c - c中的持久tcp套接字连接

c - getmaxyx 如何工作? (来自诅咒)