В основном приведенный ниже код был предназначен для использования в Linux, и, возможно, именно поэтому я получаю сообщение об ошибке, потому что я использую Windows XP, но я полагаю, что pthreads должны одинаково хорошо работать на обеих машинах. Я использую gcc в качестве моего компилятора, и я сделал ссылку с -lpthread, но все равно получил следующую ошибку.
|21|неопределенная ссылка на sched_setaffinity'|
|30|undefined reference to
sched_setaffinity'|
Если есть другой способ установки сходства потоков с помощью pthreads (в 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));
}