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

时间:2014-02-02 22:35:30

标签: c multithreading daemon

我正在构建一个应该在后台进行文本处理的服务器应用程序,但它的任务会根据来自客户端应用程序的信号而发生变化。我的问题是我在等待连接时无法执行程序主要工作。无论如何还要同时运行这份工作吗?我已经看过多线程,但是因为应用程序应该在运行时保持内部状态我无法弄清楚如何使它以这种方式运行。该程序用C语言编写。

1 个答案:

答案 0 :(得分:0)

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

在POSIX系统上执行此操作的常用方法是pthread API。 C11为标题threads.h中添加的语言添加了标准化的线程支持,但对它的支持非常少见。

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