【发布时间】:2015-11-23 17:28:52
【问题描述】:
我正在尝试在 Windows C 程序上使用线程,在 Eclipse 环境和 Mingw 上编译。
我还把-lpthread和-pthread放在编译命令上,并包含在程序中。
我根据我的逻辑在适当的地方调用了 pthread_create()、pthread_cancel() 和 pthread_exit()。
它总是按预期工作,但我的程序结束时说
此应用程序已请求运行时终止它 不寻常的方式。 请联系应用程序的支持团队了解更多信息。
有什么提示吗?我错过了什么吗?
更新
全局变量:
pthread_t thr;
启动函数内部:
pthread_create(&thr,NULL,ThrFunc,NULL);
pthread_join(thr,NULL);
内部ThrFunc:
while (TRUE)
{
// do something
if (some other thing occurs)
pthread_exit();
}
【问题讨论】:
-
不看代码就无法判断。
-
也许你在 pthread 从它的启动函数返回之前释放了它的资源?
-
“打电话给
pthread_cancel()”让我感觉不舒服…… -
到目前为止你展示的一切看起来都很好。 start 函数是什么?它是您应用程序的 main() 函数吗?你能加入mcve吗?
-
这能回答你的问题吗? How to run pthreads on windows