0
thisブログの提案に従ってみました.CPUセットをMacOSの1つのコアに設定していても、時間。そのようなOperative System上の1つのプロセッサでのみスレッドを実行させることは可能ですか?前もって感謝します。MacOSX:スケジューラのアフィニティが機能していないようです
void *th_func(void *arg);
pthread_t thread; //the thread
int counted = 0;
void start() {
int* n = (int*)malloc(sizeof(int));
*n = 0;
printf("creating on %d.\n",n[0]);
pthread_create(&thread,NULL,th_func,((void*) n));
}
void waitall() {
pthread_join(thread,NULL);
}
int main(int argc, char** args) {
start();
waitall();
return 0;
}
void *th_func(void *arg)
{
cpu_set_t cpuset;
int cpu = ((int*)arg)[0];
CPU_ZERO(&cpuset);
CPU_SET(cpu , &cpuset);
pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset);
printf("Start suffocating on %d.\n",cpu);
while(1) {
};
}
いいえ複数のコアが同じpthreadを実行しているようで、単一のコアのアフィニティが提供されたapisで機能しないように見えるので、あなたが指摘したコードの動作が正しいかどうかを尋ねています。 – jackb