【发布时间】:2013-07-23 06:41:44
【问题描述】:
我的主程序(所有 c 代码)将服务器函数作为单独的线程 (pthread_create) 启动。 这个函数等待传入的输入并用它做一些事情。同时主程序也在继续做事(主程序不会等待服务器函数完成它的工作才继续)。
现在服务器功能有可能发生错误(套接字问题,...)。然后服务器函数返回一个特定值(例如“-1”)。 如果是这种情况,我想中止整个程序的执行。
我该如何处理?
我唯一的想法是启动第二个线程,不断验证服务器线程在发生错误时更改的全局变量。然后第二个线程处理程序中止。
我还有什么其他选择?
亲切的问候
【问题讨论】:
-
你能提供一些代码吗?
-
看到这可能会有所帮助stackoverflow.com/questions/2156353/…
-
为什么服务器线程不能中止程序本身?
-
是的 - 就像@jlx 所说,只需从检测到严重错误的线程中调用您的“TerminateProcess”API,或者在您的操作系统上调用任何它。
-
我的主程序是用 Fortran 编写的。在某些时候,它会调用一个启动服务器的 c 函数(通过 iso_c_binding 耦合)。我想最好的解决方案真的是在我调用的 Fortran 主程序中编写一些程序退出函数,以防服务器函数出现错误(感谢 jxh 和 Martin James)。我知道提供一些伪代码总是更好,但我认为这在这里并没有多大意义。至少我不知道该发布什么。
标签: c multithreading pthreads status