1
이것이 내 문제입니다. 예를 들어, 내 프로그램에서 항상 작동해야하는 작업 A가 있습니다 (예 : 초당 15 회 호출되는 함수). 작업 A는 많은 양의 데이터를 수집합니다. 그런 다음 사용자가이 큰 데이터를 파일로 내보내는 것을 트리거합니다. 이 작업 B (즉, 파일로 데이터 내보내기)는 백그라운드에서 수행되어야 작업 A가 중지되지 않습니다.C에서 역 접지를 수행하는 가장 좋은 방법
#include <stdio.h>
#include <pthread.h>
void *threada() {
int i = 0;
for(i = 0;i < 1000;i++) {
printf("This is new thread!\n");
}
pthread_exit(NULL);
}
int main() {
int i = 0;
pthread_t thread;
for(i = 0;i < 105;i++) {
printf("This is current thread!\n");
if(i == 100) {
pthread_create(&thread, NULL, threada, NULL);
}
}
pthread_exit(NULL);
return 0;
}
을 또는이 작업을 수행하는 또 다른 방법이있다 :
나는 이런 식으로의 pthreads를 사용하여 배경 처리 수행 할 수 있습니다?
백그라운드에서 새 작업을 포크 할 수도 있습니다. – Shiping
포크를 사용할 때주의해야 할 문제가 있습니까? 예를 들어, 상위 프로세스가 종료되면 하위 프로세스가 종료됩니까? – PeMaCN
주 스레드에서'pthread_join (thread, NULL)'을 사용하여 작업 스레드가 완료 될 때까지 기다려야합니다. 반환 호출 전에는'pthread_exit (NULL) '이 아닙니다. 부모 프로세스가 종료되면 – Scab