zoukankan      html  css  js  c++  java
  • c++ 多线程

    看到多线程的其他博客,在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);
  • 相关阅读:
    2019/10/9 CSP-S 模拟测
    简单的面向对象
    魔术变量
    函数
    全局变量
    超级全局变量
    for循环
    while循环
    php数组排序
    python打造XslGenerator
  • 原文地址:https://www.cnblogs.com/sclu/p/12177310.html
Copyright © 2011-2022 走看看