代码块中的多线程

代码块中的多线程

我尝试在 ubuntu 中使用 codeblocks 实现多线程。
我输入了以下程序。

void *myThreadFun(void *vargp)
{

    sleep(1);
    printf("Printing hi from Thread \n");
    return NULL;
}

int main()
{

    pthread_t tid;
    printf("Before Thread\n");
    pthread_create(&tid, NULL, myThreadFun, NULL);
    pthread_join(tid, NULL);
    printf("After Thread\n");
    exit(0);
}

但我无法在 codeblocks 中编译和运行该程序。我收到以下错误

multithread.c  undefined reference to 'pthread_create'
multithread.c  undefined reference to 'pthread_join'

有人可以帮我吗

我在代码中使用了以下头文件:

pthread.h
stdio.h
stdlib.h

答案1

在 Code::Blocks 中如果您使用 GNUgcc编译器,您可能需要将-pthread编译器标志添加到编译器和链接器选项中(在“项目 --> 构建选项...”下)

Code::Blocks 编译器选项

Code::Blocks 链接器选项

答案2

不要忘记确保正确安装了 pthread 库。您可以在软件中心的“libpthread-stubs0-dev”下找到它,或者只需通过执行以下操作即可安装:

sudo apt-get install libpthread-stubs0-dev

另外,我一开始并不明白为什么你只需要手动输入-pthread......

答案3

请通过此链接,问题不在于代码块,也不在于编译器。问题似乎出在链接器上,我在 eclipse 中尝试了你的代码,如果我没有使用,我会得到同样的错误:

gcc -pthread -o multithread multithread.c

希望对您有帮助。阅读更多这里

相关内容