我可以在主应用程序和多个线程中使用相同的套接字吗?

标签 c linux multithreading sockets tcp

我有一个 C 应用程序,它作为客户端连接到 TCP 服务器,并且我尝试在主应用程序和 2 个子线程中使用从 connect() 返回的套接字号。

这样做可以吗?例如,我的主应用程序可能正在执行套接字写入,而工作线程可能正在尝试同时从套接字读取?最近我的应用程序崩溃了,我担心这可能是原因

最佳答案

线程同时工作。当我们尝试修改任何全局参数或共享资源时,需要使用信号量或互斥锁来锁定它。在这种情况下,如果某个线程正在使用该端口,则其他线程将无法使用该端口,并且可能会出现资源繁忙的错误,甚至可能导致内存故障。 因此需要锁定资源(本例中为端口)。

关于我可以在主应用程序和多个线程中使用相同的套接字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57904196/

相关文章:

python - 如何在centos中通过python将doc更改为txt

c# - 线程基础

python - 如何正确确保使用共享锁的线程终止?

c - 如何为 gcc 指定默认的全局变量对齐方式?

c++ - ATL 中的 CImage 类

c++ - 使用在 C 字符串中定位的两个 char* 获取子字符串

linux文件比较

linux - 如何在 Linux 下生成系统范围的唯一 ID

java - notify() 和 notifyAll() 的区别

c - 从 ext3 linux 安全删除文件