linux多线程实践1

来源:互联网 发布:淘宝详情页切图大小 编辑:程序博客网 时间:2024/05/21 04:20
#include <pthread.h>#include <cmath>#include <iostream>void* IsPrime(void* n){    unsigned int p=reinterpret_cast<unsigned int>(n);    unsigned int i=3u,t=(unsigned int)(sqrt(p)+1u);    if(p==2u)    {        return reinterpret_cast<void*>(true);    }    if(p%2u==0)    {        return reinterpret_cast<void*>(false);    }    while(i<=t)    {        if(p%i==0u)            return reinterpret_cast<void*>(false);        i+=2u;    }    return reinterpret_cast<void*>(true);}int main(){    pthread_t tids[8];    bool primalities[8];    int i;    for(i=0;i<8;i++)        pthread_create(&tids[i],NULL,&IsPrime,reinterpret_cast<void*>(i+2));    for(i=0;i<8;i++)        pthread_join(tids[i],reinterpret_cast<void**>(&primalities[i]));    for(i=0;i<8;i++)        std::cout<<primalities[i]<<" ";    std::cout<<std::endl;    return 0;}

请使用g++ main.c -pthread -lm -fpermissive命令编译

其中pthread_join的第二个参数存的是指向void*的指针;