lin*_*bin 7 c linux gcc pthreads
我使用gcc在CentOS7中编译此代码main.c:
#include <pthread.h>
void* mystart(void* arg)
{
pthread_yield();
return(0);
}
int main(void)
{
pthread_t pid;
pthread_create(&pid, 0, mystart, 0);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
第一次编译:gcc -Wall -g main.c -pthread -o a.out
一切都好.
第二次编译:gcc -Wall -g main.c -lpthread -o a.out
给
警告:函数'pthread_yield'的隐式声明[-Wimplicit-function-declaration]
a.out还可以正常运行吗?-pthread?是sched_yield另一种产生pthread的方法吗?pthread_yield() 是一种非标准函数,通常通过定义来启用
#define _GNU_SOURCE
Run Code Online (Sandbox Code Playgroud)
虽然您应该-pthread用于编译,但我希望您在两个编译时都能得到相同的警告(除非-pthread定义_GNU_SOURCE可能是这种情况).
正确的修复方法是不使用非标准功能pthread_yield(),sched_yield()而是使用POSIX功能代替#include <sched.h>.