linux(Centos)でpthreadを使ってプログラミングしていますか?私は何かを待つために短い時間スリープスレッドにしたいです。私はsleep()、nanosleep()、またはusleep()を使用しようとしています。スリープ関数はすべてのスレッドをスリープさせるのか、それともそれを呼び出すスレッドだけをスリープさせるのか?どんなアドバイスや参考資料もありがたいです。スリープ機能は、すべてのスレッドまたはそれを呼び出すスレッドだけをスリープさせますか?
void *start_routine() {
/* I just call sleep functions here */
sleep (1); /* sleep all threads or just the one who call it?
what about nanosleep(), usleep(), actually I
want the threads who call sleep function can
sleep with micro-seconds or mili-seconds.
*/
...
}
int main (int argc, char **argv) {
/* I just create threads here */
pthread_create (... ...);
...
return 0;
}
私のテストプログラム:
#define _GNU_SOURCE
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
#include <unistd.h>
void *start_routine (void *j) {
unsigned long sum;
int i;
int jj;
jj = (int)j;
do {
sum = 1;
for (i=0; i<10000000; i++) {
sum = sum * (sum+i);
}
if (jj == 0) {
printf ("\033[22;33m[jj%d.%ld]\t", jj, sum);
sleep(1);
}
else {
printf ("\033[22;34m[jj%d.%ld]\t", jj, sum);
}
}while (1);
pthread_exit((void *)0);
}
int main(int argc, char *argv[])
{
cpu_set_t cpuset;
pthread_t thread[2];
int i;
i = 0;
CPU_ZERO(&cpuset);
CPU_SET(i, &cpuset);
pthread_create (&thread[0], NULL, start_routine, (void *)i);
pthread_setaffinity_np(thread[0], sizeof(cpu_set_t), &cpuset);
i = 1;
CPU_ZERO(&cpuset);
CPU_SET(i, &cpuset);
pthread_create (&thread[1], NULL, start_routine, (void *)i);
pthread_setaffinity_np(thread[1], sizeof(cpu_set_t), &cpuset);
pthread_exit (NULL);
}
発信者 – bestsss
@Kiril、質問の履歴を確認してください。それは答えのための単一のライナーだ – bestsss
私は "警告"ではなく "仕事"を意味した。 @bestsss - 何を確認するのですか?私はこの質問について何も言っていない、私もアップ - 投票した。 –