c - linux 中对 pthread_create 的 undefined reference (c 编程)

标签 c linux pthreads

<分区>

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

sem_t e,n,s;
int a[10];
int flag=0;
int sizeb=10;

void take()
{
    int out;
    if(flag==0)
    {
        printf("the consumer is waiting\n");
    }
    else
    {
    printf("\n the consumer has entered the cs:\n");
    for(out=0;out<10;out++)
    {

        printf("\t%d",a[out]);
    }
}
}
void consumer()
{
    sem_wait(&n);
    sem_wait(&s);
    printf("\n Consumer Unit\n");
    take();
    if(flag==1)
    {
        printf("\n the consumer has consumed\n");
    }
    sem_post(&s);
    sem_post(&e);
}
void append()
{
    int in;
    printf("\n the producer has entered the cs\n");
    for(in=0;in<10;in++)
    {
        a[in]=in+1;
        printf("\t%d",a[in]);
    }
}
void producer()
{
    sem_wait(&e);
    sem_wait(&s);
    printf("\n producer unit\n");
    append();
    printf("\n the producer has produced\n");
    sem_post(&s);
    sem_post(&n);
    flag=1;
}
int main()
{
    sem_init(&s,0,1);
    sem_init(&n,0,1);
    sem_init(&e,0,20);
    pthread_t p1,p2,p3;
    pthread_create(&p1,NULL,(void *)consumer,NULL);
    pthread_join(p1,NULL);
     pthread_create(&p2,NULL,(void *)producer,NULL);
        pthread_join(p2,NULL);
     pthread_create(&p3,NULL,(void *)consumer,NULL);
        pthread_join(p3,NULL);
    return 0;
}

最佳答案

在这种特定情况下,使用 -pthread 优于 -lpthread。

关于c - linux 中对 pthread_create 的 undefined reference (c 编程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5854787/

相关文章:

linux - qt faststart和ffmpeg生成实时mp4文件

c++ - 为什么boost::condition_variable可以使用pthread_cond_signal来仅唤醒一个线程

c++ - pthreads互斥锁断言错误

php - UTF-8贯穿始终

c - 实现push和pop的单链表-seg fault

c - 从编辑控件获取 Unicode 字符串

c - 是否可以在 C 中创建一个 "variable" header 保护名称?

php - 如何将 php 与 bash 脚本连接或将变量从 php 传递到 bash 脚本

c - 是否可以确定持有互斥锁的线程?

c - 如何将数组转换为十六进制值