无法编译 pthread 调度 API
Can't compile pthread scheduling API
所以在我的讲座中,我的教授给了我们一些我们需要在下一个作业中使用的代码,它的标题是 Pthread 调度 API,这是代码:
#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS 5
int main(int argc, char *argv[])
{
int i;
pthread_t tid[NUM_THREADS];
pthread_attr_t attr;
/*get default attributes */
pthread_attr_init(&attr);
/* set scheduling algorithm to process or system */
pthread_attr_setscope(&attr,PTHREAD_SCOPE_SYSTEM);
/* set scheduling policy -FIFO, RT or OTHERS*/
pthread_attr_setschedpolicy(&attr,SCHED_OTHER);
/* create the threads */
for (i=0;i<NUM_THREADS;i++)
pthread_create(&tid[i],&attr,runner,NULL);
/* join each thread*/
for (i=0;i<NUM_THREADS;i++)
pthread_join(tid[i],NULL);
}
void *runner(void *param){
printf("I am a thread\n");
pthread_exit(0);
}
然而,当我编译它时,它告诉我 运行ner 在 pthread_create 中使用时未声明。这应该可以运行?难道我做错了什么?如果它不应该 运行 我该如何使用这个 API?我在互联网上四处张望,似乎很多讲座都教这个 API 但我找不到如何使用它,我想用这个 API 做的是只需创建几个并发线程,其中一个是 parent 并使用这些线程
打印内容
将函数定义放在 main 之前:
void *runner(void *param);
否则,在编译时未定义运行器,因为您是在最后定义它。
把定义放在上面,把实现放在下面,就能解决问题。 (你也可以把你的函数实现放在主要的上面)
所以在我的讲座中,我的教授给了我们一些我们需要在下一个作业中使用的代码,它的标题是 Pthread 调度 API,这是代码:
#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS 5
int main(int argc, char *argv[])
{
int i;
pthread_t tid[NUM_THREADS];
pthread_attr_t attr;
/*get default attributes */
pthread_attr_init(&attr);
/* set scheduling algorithm to process or system */
pthread_attr_setscope(&attr,PTHREAD_SCOPE_SYSTEM);
/* set scheduling policy -FIFO, RT or OTHERS*/
pthread_attr_setschedpolicy(&attr,SCHED_OTHER);
/* create the threads */
for (i=0;i<NUM_THREADS;i++)
pthread_create(&tid[i],&attr,runner,NULL);
/* join each thread*/
for (i=0;i<NUM_THREADS;i++)
pthread_join(tid[i],NULL);
}
void *runner(void *param){
printf("I am a thread\n");
pthread_exit(0);
}
然而,当我编译它时,它告诉我 运行ner 在 pthread_create 中使用时未声明。这应该可以运行?难道我做错了什么?如果它不应该 运行 我该如何使用这个 API?我在互联网上四处张望,似乎很多讲座都教这个 API 但我找不到如何使用它,我想用这个 API 做的是只需创建几个并发线程,其中一个是 parent 并使用这些线程
打印内容将函数定义放在 main 之前:
void *runner(void *param);
否则,在编译时未定义运行器,因为您是在最后定义它。
把定义放在上面,把实现放在下面,就能解决问题。 (你也可以把你的函数实现放在主要的上面)