c++ - Boost::Thread 或 fork() :多线程 HTTP 代理

标签 c++ multithreading boost

我正在系统上测试 boost::thread。正好我需要充当一个fork(),因为一个线程修改了其他变量,甚至是类的成员变量

我使用 fork() 做这个项目,还是有一些替代方案仍在使用 boost::thread?

基本上我在 Linux 和 FreeBSD 中运行这个程序。

在主线程是一个http代理,accept(),在做服务的副线程是接受一个类(这里有文件描述符socket)的函数。

有没有更好的方法来实现代理?

最佳答案

fork() 生成一个具有独立内存区域的进程。更改必须通过 IPC 进行调解。

boost::thread 创建一个可以共享内存的线程

它们没有可比性。


要创建线程本地存储,请使用 boost::thread_specific_ptr

参见 http://www.boost.org/doc/libs/1_42_0/doc/html/thread/thread_local_storage.html .

(如果编译器架构可以支持,您也可以将全局变量修饰为 __thread int xyz; 以使其成为线程局部变量。)

关于c++ - Boost::Thread 或 fork() :多线程 HTTP 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2525762/

相关文章:

java - 为什么 run() 只被调用一次?

c++ - 我可以从静态 const char* 数组定义以下宏 "unstringifying"吗?

c++ - 此 shared_ptr 示例中的内容不清楚

c++ - 无论如何在 C++ 中将 2 维数组煮沸为整数?

c++ - std::mutex 和 std::atomic 的链接问题

.net - 套接字上的线程太慢

python - 通过boost python从python中提取常量值

c++ - 如何使用 boost::spirit 将文本解析为结构?

c++ - 我有一个应该打印数组的函数,但由于某种原因它不起作用

c++ - 避免专用模板中的代码重复