Pthread_create로 Thread를 생성한후 pthread_join으로 리턴값을 받아 드립니다. 이것이 여러번 시행시일시에는 그만큼 만들고 지우는것이 반복되 시간상 손실이 발생하게 되더군요.
while(조건1 ){
for(i 만큼 반복 ){
pthread_create(&p_thread[j],NULL,t_function,NULL);// t_function 반복
}
for(i만큼 반복){
pthread_join(t_function 리턴값을 받음);
}
}
while문이 없으면 상관이없겠지만 create하고 join 해서 기다리는 작업이 많이 생기므로 i가 100이라면
100개를 만들고 100개를 기다리고 다시 0개에서 100개를 만들고 100개를 기다리고 작업이 반복되서
결국 while문이 길어지면 길어질수록 속도도 느려지더라구요....
join으로 리턴값을 받는 상황이라.......0~100개를 만들고 0~100개를 기다리고 이런 상황이아닌 100개를 유지하면서 리턴값을 계속 받을수있는 방법이 없을까요????
for(i 만큼 반복 ){
pthread_create([i]갯수 만큼 생성);
}
while(조건1 ){
for(i만큼 반복){
pthread_join(리턴값을 받음);
}
}
위와 같이 생성해놓고 쓰레드 생성해놓은것을 계속 재활용 하고 싶은데.....
어떤 방법을 사용하면 좋을까요?
Thread Pool을 구현해서 해서 스케줄링까지 다 해야할까요?