下面这个例子通过一个代码说明两个线程关联一个函数,实现并发操作,预期结果这两个线程都使用了print函数,它们各自执行各自的,不会因为使用了同一个函数而受到影响。

my_test.cpp

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *print(void *arg)
{
    for (int i = 0; i < 20; ++i)
    {
        printf("%d\n",i);
    }
    return NULL;
}

int main()
{
    pthread_t p1, p2;
    pthread_create(&p1, NULL, print, NULL);
    pthread_create(&p2, NULL, print, NULL);
    pthread_join(p1, NULL);
    pthread_join(p2, NULL);
    return 0;
}

但是在linux系统下使用以下命令直接编译该代码时报错“undefined reference to `pthread_create”

编译命令:

gcc my_test.cp -o my_test

由于pthread库不是标准linux库, 所以出错。 在以前的编译命令后面添加 -lpthread 即可,如下:

gcc my_test.cp -o my_test -lpthread

 

 

 

Logo

更多推荐