我正在构建一个服务器应用程序,该应用程序应该在后台进行文本处理,但它的任务根据来自客户端应用程序的信号进行更改。我的问题是,在等待连接时我无法完成程序的主要工作。无论如何可以同时运行这项工作吗?我研究过多线程,但是因为应用程序应该在运行时保持内部状态,所以我无法弄清楚如何使其以这种方式运行。该程序是用 C 语言编写的。
最佳答案
如果您必须维护所有线程都需要访问的内部状态,则需要同步。每个线程都有自己的堆栈,但它们都共享堆。如果您访问线程上的对象,则需要确保您的线程获得该状态的锁(可能要等到获得它为止),然后更改状态,释放锁等等。
在 POSIX 系统上执行此操作的常见方法是 pthread API 。 C11 为语言添加了标准化线程支持,可以在头文件 threads.h
中找到,但对此的支持非常罕见。
或者,您也可以使用多个进程。这将改变线程之间的通信方式,但应用程序的一般模型将保持不变。
关于c - 在运行其他任务时接受网络连接的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21517170/