说真的写了这篇博文时,才知道c语言本身不支持多线程,而是一些windowsapi让c语言拥有多线程的能力,那下面内容就以打开对话框为例,展现如何实现多线程的同步与异步。
文章目录
- 问题起源
- c语言多线程同步方案
- c语言多线程异步方案
- 总结
问题起源
想要实现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;
}
代码效果
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);}getchar();return 0;
}
总结
对代码的查阅会发现,关键在于定义多线程的函数与句柄,最后一个循环分别创建一个线程即可。