0
下面基本上是打算在Linux上使用,也許這就是代碼,因爲我使用的是Windows XP,我得到了錯誤的原因,但我估計應該並行線程的工作一樣以及兩臺機器上。我使用gcc作爲我的編譯器,而且我使用了-lpthread鏈接,但是我得到了以下錯誤。錯誤:未定義的引用`了sched_setaffinity」在Windows XP上
| 21 |未定義參考sched_setaffinity'| |30|undefined reference to
了sched_setaffinity「|
如果有設置使用並行線程(在Windows上)的線程關聯性讓我知道的另一種方法。我已經知道所有關於windows.h線程相關函數的可用,但我想保持多平臺的東西。謝謝。
#include <stdio.h>
#include <math.h>
#include <sched.h>
double waste_time(long n)
{
double res = 0;
long i = 0;
while(i <n * 200000)
{
i++;
res += sqrt (i);
}
return res;
}
int main(int argc, char **argv)
{
unsigned long mask = 1; /* processor 0 */
/* bind process to processor 0 */
if (sched_setaffinity(0, sizeof(mask), &mask) <0)//line 21
{
perror("sched_setaffinity");
}
/* waste some time so the work is visible with "top" */
printf ("result: %f\n", waste_time (2000));
mask = 2; /* process switches to processor 1 now */
if (sched_setaffinity(0, sizeof(mask), &mask) <0)//line 30
{
perror("sched_setaffinity");
}
/* waste some more time to see the processor switch */
printf ("result: %f\n", waste_time (2000));
}
這只是我討厭微軟的另一個原因。現在我不得不使用兩種不同的API。你知道是否有任何理由不允許pthread在Windows上設置親和性? – pandoragami
我在代碼中看不到任何對Pthreads的引用。 sched_ *系列調用不是Pthreads的一部分,它們是低級別的Linux系統調用,爲調度程序提供提示。由於Pthreads不是Windows上的本地線程API,人們可能會認爲它沒有完全實現。你使用哪個實現? –
我剛剛使用了mingw/gcc附帶的pthreads頭文件。我實際上使用了codeblocks和mingw。是否還有其他可以設置線程關聯的多平臺(linux/windows)的apis? – pandoragami