리눅스에서 C++의 스레드를 사용하여 프로그램을 작성하고 있습니다.멀티 스레딩 한도는?
현재 스레드 배열을 유지하고 있으며 1 초가 경과 할 때마다 어느 것이 완료되었는지 확인하고 다시 시작합니다. 이거 나쁜거야? 이 프로그램을 오랫동안 계속 실행해야합니다. 지금은 스레드를 다시 시작하는 많은 루프 (마지막 시도에서 100 번째 루프) 후에 코드 11을 얻고 있습니다. 재사용 스레드를 알아 냈고 한 번에 적은 수의 항목 만 실행되도록했습니다. 한계에 도달하지 않을 것입니다. 내가 사용하고있는 배열은 크기가 8 개뿐입니다 (물론, 매번 8 개가 시작되지 않고 중단 된 것입니다).
아이디어가 있으십니까?
내 코드는 다음과 같습니다 : 나는 루프에 들어갈 및 스레드를 처음 시작할 수 있습니다 단지 있도록
if (loop_times == 0 || pthread_kill(threads[t],0) != 0)
{
rc = pthread_create(&threads[t], NULL, thread_stall, (void *)NULL);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
thread_count++;
}
loop_times 변수입니다. 그렇지 않으면 이전에 스레드가 시작되지 않았으므로 SEGFAULT가 발생합니다. 또한
, 나는 PTHREAD_THREADS_MAX의 가치를보고 싶어 한,하지만 ... 그것은 더 나은 갈 다중 스레드를 사용하려면 내가
프로그램을 잠시 실행하면 ps -eLf를 사용하여 Linux에서 사용하고 있다고 생각하는 스레드 수를 확인할 수 있습니다. – masebase
최근 컴파일러를 사용하는 경우 pthread 대신 C++을 사용하십시오. –
스레드를 죽이는 것은 매우 나쁜 습관입니다. 끝내자. 많은 스레딩 API가 이러한 가능성을 부여하지 않을 것입니다. 그렇게하는 것이 좋지 않다고 말하는 사람들입니다. –