pthread_join 分段错误
pthread_join Segmentation fault
我正在尝试将 pthread_join 与此生产者-消费者程序一起使用,但我一直遇到分段错误。我的目的是等待所有生产者线程结束,然后终止所有消费者。但是在第一个线程加入后我得到了一个分段错误。我在网上搜索但没有找到任何有用的东西。有什么想法吗?
using namespace std ;
int main()
{
pthread_mutex_init(&mutex , NULL);
sem_init(&full , 0 ,0);
sem_init(&empty , 0 , BUFFER_SIZE);
pthread_t ProducerThread , ConsumerThread;
int *aa = new int [4];
for(int i = 0 ; i < 4 ; i++)
{
aa[i] = i;
pthread_t t;
int k= pthread_create(&t , NULL, Produce , &aa[i]);
if(k!=0)
cout<<"Errot"<<endl;
else
printf("Creating Producer %d \n", i);
}
int *bb = new int[2];
for(int i = 0 ; i < 2 ; i++)
{
bb[i] = i;
pthread_t t;
pthread_create(&t , NULL, Consume , &bb[i]);
printf("Creating Consumer %d \n", i);
}
int s;
for (int i=0;i<4;i++){
s = pthread_join(aa[i],NULL);
if (s != 0)
cout<< "pthread_join error" ;}
pthread_join() 的参数是存储在 pthread_create() 的第一个参数中的值。
pthread_t t;
int k= pthread_create(&t , NULL, Produce , &aa[i]);
线程句柄是pthread_t t
句柄。你用它做了什么?你把它扔掉了,你正在将 aa[i]
参数传递给 pthread_join()。
这不是线程句柄。
您需要保存 pthread_t
句柄, 是传递给 pthread_join() 的句柄。
我正在尝试将 pthread_join 与此生产者-消费者程序一起使用,但我一直遇到分段错误。我的目的是等待所有生产者线程结束,然后终止所有消费者。但是在第一个线程加入后我得到了一个分段错误。我在网上搜索但没有找到任何有用的东西。有什么想法吗?
using namespace std ;
int main()
{
pthread_mutex_init(&mutex , NULL);
sem_init(&full , 0 ,0);
sem_init(&empty , 0 , BUFFER_SIZE);
pthread_t ProducerThread , ConsumerThread;
int *aa = new int [4];
for(int i = 0 ; i < 4 ; i++)
{
aa[i] = i;
pthread_t t;
int k= pthread_create(&t , NULL, Produce , &aa[i]);
if(k!=0)
cout<<"Errot"<<endl;
else
printf("Creating Producer %d \n", i);
}
int *bb = new int[2];
for(int i = 0 ; i < 2 ; i++)
{
bb[i] = i;
pthread_t t;
pthread_create(&t , NULL, Consume , &bb[i]);
printf("Creating Consumer %d \n", i);
}
int s;
for (int i=0;i<4;i++){
s = pthread_join(aa[i],NULL);
if (s != 0)
cout<< "pthread_join error" ;}
pthread_join() 的参数是存储在 pthread_create() 的第一个参数中的值。
pthread_t t;
int k= pthread_create(&t , NULL, Produce , &aa[i]);
线程句柄是pthread_t t
句柄。你用它做了什么?你把它扔掉了,你正在将 aa[i]
参数传递给 pthread_join()。
这不是线程句柄。
您需要保存 pthread_t
句柄, 是传递给 pthread_join() 的句柄。