这段时间有线程池的需求,然后搜搜别人的博客没有什么讲的比较深入的,然后都是贴的源码,贼长,想着是有时间了看看unix编程这本书再来写写线程池,暂时先用这个伪线程池解决解决燃煤之急


demo源码如下:

// 通过外置for循环实现的伪线程池结构demo
// by csbear
#include<stdio.h>
#include<iostream>
#include<pthread.h>
using namespace std;
#define NUM_THREAD 12

void * thread_inc(void* arg){
    int temp=*(int*)arg;
    cout<<temp<<endl;
}

int main(){
    pthread_t thread_id[NUM_THREAD];
    int num_todo=1000;
    int num_do[num_todo];
    int round=num_todo/NUM_THREAD;
    int round_else=num_todo%NUM_THREAD;
    int wide;
    for(int i=1;i<=num_todo;i++){
        num_do[i-1]=i;
    }
    for(int i=0;i<=round;i++){
        if(i==round)
            wide=round_else;
        else
            wide=NUM_THREAD;
        for(int j=0+i*NUM_THREAD;j<NUM_THREAD*i+wide;j++){
            pthread_create(&thread_id[j%NUM_THREAD],NULL,thread_inc,(void *)&num_do[j]);   
        }
        for(int j=0+i*NUM_THREAD;j<NUM_THREAD*i+wide;j++){
            pthread_join(thread_id[j%NUM_THREAD],NULL);
        }
    }
    return 0;
}
Last modification:April 21st, 2020 at 01:05 am