zoukankan      html  css  js  c++  java
  • c++ multi pthread pass struct

    #include <stdio.h>
    #include <stdlib.h>
    #include <uuid/uuid.h>
    #include <unistd.h>
    #include <fstream>
    #include <istream>
    #include <ostream>
    #include <sstream>
    #include <string.h>
    #include <iostream>
    #include <chrono>
    
    void retrieveUuid(char *uuidValue)
    {
        uuid_t newUUID;
        uuid_generate(newUUID);
        uuid_unparse(newUUID, uuidValue);
    }
    
    
    void *printBookStruct(void *structP);
    void mp12();
    
    int main()
    {
        mp12();
        return 0;
    }
    
    void mp12()
    {
        struct BookStruct arr[100];
        for (int i = 0; i < 100; i++)
        {
            arr[i].BookId = i * i * i * i;
            arr[i].BookName = (char *)malloc(40);
            arr[i].BookTitle = (char *)malloc(40);
            retrieveUuid(arr[i].BookName);
            retrieveUuid(arr[i].BookTitle);
        }
    
        pthread_t tds[100];
        struct BookStruct *p;
        for(int i=0;i<100;i++)
        {    
            cout<<"Thread "<<i<<",started!";      
            pthread_create(&tds[i],NULL,printBookStruct,(void*)&arr[i]);
            pthread_join(tds[i],NULL);
            cout<<"Thread "<<i<<" finished!"<<endl;
        }

    pthread_exit(NULL);

    }
    
    
    void *printBookStruct(void *structP)
    {
        struct BookStruct *p;
        p=(struct BookStruct*)(structP);
        if(p!=nullptr)
        {
            printf("BookId=%d,Name=%s,Title=%s!",p->BookId,p->BookName,p->BookTitle);
            free(p->BookName);
            free(p->BookTitle);
        } 
         pthread_exit(NULL);
    }
    
    
    

    Compile via g++ as below command

    g++ -g -std=c++2a -I. h1.cpp -o h1 -luuid -lpthread

    Run the complile result as below

    ./h1

    The executed result as below

    The keylocated at the invoked method. should modified by void * AKS void pointer method and the parameter should convert to void pointer and in the method should convert the void pointer to specific pointer

    pthread_create(&tds[i],NULL,printBookStruct,(void*)&arr[i]);
    
    void *printBookStruct(void *structP)
    {
        struct BookStruct *p;
        p=(struct BookStruct*)(structP);
        if(p!=nullptr)
        {
            printf("BookId=%d,Name=%s,Title=%s!",p->BookId,p->BookName,p->BookTitle);
            free(p->BookName);
            free(p->BookTitle);
        } 
    pthread_exit(NULL);
    return nullptr; }
  • 相关阅读:
    域hash值破解的总结经验
    centos下安装ngnix+php+mysql服务
    方程式EQGRP_Lost_in_Translation工具之fb.py
    Bypass AV meterpreter免杀技巧
    跟我一起创建栈
    vue-cli3使用yarn run build打包找不到路径
    使用vue-cli3快速适配H5项目
    关于判断是安卓还是ios环境跳转下载页
    跟我一起学习webpack输出动态HTML(三)
    跟我一起学习webpack使用配置文件(二)
  • 原文地址:https://www.cnblogs.com/Fred1987/p/15679349.html
Copyright © 2011-2022 走看看