c - 在运行其他任务时接受网络连接的方法?

标签 c multithreading daemon

我正在构建一个服务器应用程序,该应用程序应该在后台进行文本处理,但它的任务根据来自客户端应用程序的信号进行更改。我的问题是,在等待连接时我无法完成程序的主要工作。无论如何可以同时运行这项工作吗?我研究过多线程,但是因为应用程序应该在运行时保持内部状态,所以我无法弄清楚如何使其以这种方式运行。该程序是用 C 语言编写的。

最佳答案

如果您必须维护所有线程都需要访问的内部状态,则需要同步。每个线程都有自己的堆栈,但它们都共享堆。如果您访问线程上的对象,则需要确保您的线程获得该状态的锁(可能要等到获得它为止),然后更改状态,释放锁等等。

在 POSIX 系统上执行此操作的常见方法是 pthread API 。 C11 为语言添加了标准化线程支持,可以在头文件 threads.h 中找到,但对此的支持非常罕见。

或者,您也可以使用多个进程。这将改变线程之间的通信方式,但应用程序的一般模型将保持不变。

关于c - 在运行其他任务时接受网络连接的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21517170/

相关文章:

c - 我无法在项目中使用输入文件,因为 Clion 似乎看不到该文件

c - 将字符串传递给函数

c - 在其挂钟运行时间的一部分上测量守护进程 CPU 利用率

python - 守护进程 python 包装器 "subprocess I/O timed out",需要一些指导

html - 我应该在哪里安装 webkit 的插件?

android - 从 'byte*' 到 'byte' 的无效转换

Android:如果已经运行,则停止方法被调用两次

c - TCP套接字到多个IP/端口

java - Java中唤醒线程的问题

java - ScheduledExecutorService 生命周期?