1
これは私の問題です。例えば、私のプログラムには、常に動作する必要がある操作Aがあります(1秒間に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