【发布时间】:2018-12-05 11:59:16
【问题描述】:
我正在编写一个 C 程序。
对于线程,我使用 WINAPI 库。
但有时 CreateThread 函数不会启动函数关联。
我使用带有 INFINITE 参数的 WaitForSingleObject 函数让我的线程启动,但他从不启动
GetLastError 函数总是返回 0,所以我不知道我的错误在哪里
按下 GTK 按钮时调用合并函数。
你会在下面找到我的代码
void merge(GtkWidget *wiget, gpointer data){
HANDLE thread;
FtpLogin *login = (FtpLogin *) data;
thread = CreateThread(NULL, 0, mergeThread, login, 0, NULL);
printf("%ld", GetLastError());
WaitForSingleObject(thread, INFINITE);
if(thread == NULL)
puts("error");
}
DWORD WINAPI mergeThread( LPVOID lpParam )
{
puts("Thread start");
return 0;
}
感谢您的帮助
【问题讨论】:
-
您需要提供有关您遇到的错误或错误行为的更多详细信息。看看minimal reproducible example。
-
@PatrickMevzek 感谢您的评论。我没有任何错误,线程只是没有启动。 GetLastError 函数从不返回错误代码。
-
CreateThread总是启动你的函数,为什么你决定mergeThread没有执行? -
puts("线程开始\n");也许吧。