说真的写了这篇博文时,才知道c语言本身不支持多线程,而是一些windowsapi让c语言拥有多线程的能力,那下面内容就以打开对话框为例,展现如何实现多线程的同步与异步。
想要实现c语言打开多个对话框的多线程同步与异步
#include<Windows.h>
#include<stdio.h>
#include<stdlib.h>
DWORD WINAPI mymsg(LPVOID lp) {
MessageBoxA(0, "hello", "china", 0);
}
int main() {
HANDLE hthread;
DWORD threadid;
for (int i = 0; i < 5; i++) {
hthread = CreateThread(
NULL,
NULL,
mymsg,
NULL,
0,
&threadid
);
WaitForSingleObject(hthread
, INFINITE);
}
getchar();
return 0;
}
代码效果
#include<Windows.h>
#include<stdio.h>
#include<stdlib.h>
DWORD WINAPI mymsg(LPVOID lp) {
MessageBoxA(0, "hello", "china", 0);
}
int main() {
HANDLE hthread;
DWORD threadid;
for (int i = 0; i < 5; i++) {
hthread = CreateThread(
NULL,
NULL,
mymsg,
NULL,
0,
&threadid
);
}
getchar();
return 0;
}
对代码的查阅会发现,关键在于定义多线程的函数与句柄,最后一个循环分别创建一个线程即可。