C++ thread pass multiple functions and arguments via lambda expression

2022/4/4 17:19:07

本文主要是介绍C++ thread pass multiple functions and arguments via lambda expression,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

#include "Model/Util.h"

char *Util::uuidValue = (char *)malloc(40);

void Util::threadLambda6(int xx,int yy,string sstr)
{
    thread t1([](int x,int y,string str)
    {
        cout<<endl;
        printNumUuid2(x);
        cout<<endl;
        printUuidNum3(y);
        cout<<endl;
        printStr(str);
    },xx,yy,sstr);
    t1.join();
}

void Util::thread5(int xx,int yy,string sstr)
{ 
    thread t1([](int x,int y,string str)
    {
        printNumUuid2(x);
        cout<<endl<<endl;
        printUuidNum3(y);
        cout<<endl<<endl;
        printStr(str);
        cout<<endl<<endl;
    },xx,yy,sstr);
    t1.join();
}

void Util::printStr(string str)
{    
    cout<<str<<endl;
    cout<<"FILE:"<<__FILE__<<",FUNCTION:"<<__FUNCTION__<<",LINE:"<<__LINE__<<endl;
}

char *Util::getUuid1()
{
    uuid_t newUUID;
    uuid_generate(newUUID);
    uuid_unparse(newUUID, uuidValue);
    return uuidValue;
}

void Util::printNumUuid2(int x)
{
    Util ul;
    for(int i=0;i<x;i++)
    {
        cout<<"Num="<<i<<","<<ul.getUuid1()<<endl;
    }
}

void Util::printUuidNum3(int y)
{
    Util ul;
    for(int i=0;i<y;i++)
    {
        cout<<ul.getUuid1()<<","<<i<<endl;
    }
}


int main(int args, char **argv)
{
    try
    {
        threadLambda33(atoi(argv[1]),atoi(argv[2]),argv[3]);
    }
    catch (const std::exception &e)
    {
        cout << e.what() << endl;
        std::cerr << e.what() << '\n';
    }
    return 0;
}

void threadLambda33(int x,int y,string str)
{
    Util ul;
    ul.threadLambda6(x,y,str);
}
g++ -g -std=c++2a -I. *.cpp ./Model/*.cpp  -o h1 -luuid -lpthread

 



这篇关于C++ thread pass multiple functions and arguments via lambda expression的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程