首页 > 编程语言 > 详细

c++ 多线程

时间:2020-01-10 19:41:20      阅读:70      评论:0      收藏:0      [点我收藏+]

看到多线程的其他博客,在c++中推荐使用_beginthreadex而不是createThread创建线程。

_beginthreadex()是C运行库函数,CreateThread()是windows API。CreateThread在关闭时需要CloseHandle,容易造成内存泄漏等……

1.通过_beginthreadex()创建多线程

技术分享图片

1 1 unsigned threadid; //返回线程ID
2 2 HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadProc, (LPVOID)&imgMat, 0, &threadid);  //传递参数Mat类型的引用转换为void*
1 WaitForSingleObject(hThread, INFINITE);    //等待子线程返回后主线程再继续执行
2 CloseHandle(hThread); //关闭线程句柄

2.线程函数

unsigned int __stdcall ThreadProc(LPVOID lpParameter)
{
    using namespace cv; //引用opencv命名空间
    Mat* imgptr=(Mat*)lpParameter; //转换为指向Mat类型的指针变量
    Mat imgMat = *(Mat*)lpParameter; //转换为Mat类型变量
    return 0;  
}

3.中止、挂起、恢复线程

1     TerminateThread(threadid);
2     SuspendThread(threadid);
3     ResumeThread(threadid);

c++ 多线程

原文:https://www.cnblogs.com/sclu/p/12177310.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!