每每遇到bug,这意味着,要么几分钟内解决,要么耗费大量的时间和精力才能搞定
我将使用多线程时遇到的这些问题,以及解决方案总结了一下,借此提醒自己。
1.怎么使用多线程?
引用头文件pthread.h,然后可以使用多线程方面的功能了。详见MSDN或者自行百度
2.VS提示找不到pthread.h?
之前有人公布过解决办法,这里贴上链接:点我跳转
3.VS提示:编译错误C2011 “timespec”:“struct”类型重定义
还是那个链接,在文章最下面。点我跳转
4.VS提示:编译错误C2011 “timespec”:“struct”类型重定义
可修改pthread.h文件,在
**#if !defined( PTHREAD_H )
#define PTHREAD_H**
下面加上一行宏定义
#define HAVE_STRUCT_TIMESPEC
可以解决“timespec”:“struct”类型重定义错误
5. 运行的时候提示:无法启动此程序,因为计算机中丢失pthreadVC2.dll
可以把pthread的文件解压缩后,把Pre-built.2文件夹中的pthreadVC2.dll复制后放到C:\Windows\SysWOW64中(64位系统)
6.VS运行的时候提示:错误 1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用
此时需要在代码中加入
#pragma comment(lib, "pthreadVC2.lib")
这里附上成功运行多线程的截图:创建线程并让它负责响应热键事件。没有多线程,它可能都没办法一边运行程序一边监视热键,经测试,可以直接静态编译。
对了,使用多线程完毕之后,别忘了使用关闭多线程的代码啊。