Poco::ServerApplication的多线程问题
Multithread problems with Poco::ServerApplication
我同时使用Poco::ServerApplication
和Poco::TaskManager
,遇到了有线问题。
如果没有--daemon
选项启动,一切正常。但是,当使用--daemon
启动时,传递给任务管理器的任务永远不会启动。我用gdb调试它,发现当使用--daemon
选项时,任务管理器内部任务池中的线程启动并很快停止。因此,当调用TaskManager::start
时,它只是使用一个已经完成的线程,因此任务永远不会启动。
我想知道这是否因为任何限制linux守护进程,或者有其他什么会导致这个问题?
下面的示例代码可以在我的盒子上重现这个问题。
http://codepaste.net/jhoyt5
对不起,我的英语很差。有什么好的建议吗?
来自官方ServerApplication文档:
新线程只能在initialize()或main()或从这些方法调用的方法中创建,而不能在应用程序类的构造函数或实例变量的构造函数中创建。这样做的原因是为了创建守护进程而调用fork(),而在调用fork()之前创建的线程不会被接管到守护进程。
我也遇到过同样的问题。我实际上并没有在构造函数中启动线程,而是在构造函数中创建了Poco::TaskManager容器。一旦我在main()中创建了它,一切都工作了。
相关文章:
- 尝试从头开始实现Leetcode的FizzBuzz多线程问题。收到"libc++abi.dylib: terminating"错误
- 在多线程函数中返回共享的常量指针会导致计时问题吗?
- C++多线程生产者-消费者问题
- C++ 多线程中的锁和条件变量问题
- 多线程与线程小问题
- 多线程概念问题
- 在 Linux 中从单独的单线程进程生成多线程进程时出现问题
- 如何解决多线程绘图的问题不流畅
- C++ std::endl 的多线程程序 I/O 问题
- 我遇到了一个关于多线程的小问题.需要多线程来计算 Pi 和方差
- 多线程程序线程联接问题
- 多线程环境中的输出字符串流出现问题
- QT有问题的多线程
- C 多线程TCP服务器问题
- C++-关于多线程的问题
- 在多线程环境中使用Mysql++的问题
- Borland C++-多线程TCPServer问题
- gdal多线程问题
- 从多线程.net应用程序调用的本机dll中的tbb存在问题
- 有关 dup2 和多线程的问题