2015-11-23 54 views
0

我试图在Windows C程序上使用线程,在Eclipse环境和Mingw上编译。与Mingw在Windows上使用pthread时出错

我也把-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(); 
} 
+1

无法看到代码而告知 – nos

+0

也许你正在释放g从它的启动函数返回之前,pthread的资源? – Neijwiert

+0

“*调用'pthread_cancel()'*”让我感觉不舒服... – alk

回答

0

解决!

AFAIK存在的MinGW下的Windows没有可移植的并行线程库。

我解决了我问题使用CreateThread(),并让Mingw使用Windows本机线程解决它。

1

“此应用程序已请求运行时终止它在 不寻常的方式。请与应用程序的支持团队,为更多 信息。”

来解决this这已经看清楚。

或者

abort()功能是从您的应用程序调用你会看到错误。

From MSDN:

abort

中止当前进程并返回错误代码。

void abort(void);返回值

中止不会将控制权返回给调用进程。默认情况下,它 终止当前进程和返回的3

退出代码备注

默认情况下,中止程序将打印消息:

“此应用程序已请求运行时终止它在 不寻常的方式。请联系应用程序的支持团队获取更多 信息。“

但在你的情况,你需要找到为什么abort()获取调用。

相关问题