这段时间有线程池的需求,然后搜搜别人的博客没有什么讲的比较深入的,然后都是贴的源码,贼长,想着是有时间了看看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;
}