PThread - 尽管调用 pthread_join 线程仍提前退出
PThread - Thread Exiting early despite calling pthread_join
我已经以相当基本的方式实现了 PThreads:
#include<iostream>
#include<pthread.h>
#include<stdio.h>
using namespace std;
class ThreadParameter
{
public:
char symbol_char;
int count;
};
void* print_char (void* param)
{
ThreadParameter* p = (ThreadParameter*)param;
for (int i=0; i< p->count; i++)
{
cout<< p->symbol_char <<endl;
i++;
}
return NULL;
}
int main ()
{
pthread_t thread1_id;
ThreadParameter param1;
param1.symbol_char = 'X';
param1.count = 27;
pthread_create (&thread1_id, NULL, &print_char, ¶m1);
int i = 0;
while (i<10)
{
cout<<"O"<<endl;
i++;
}
pthread_join(thread1_id,NULL);
return 0;
}
而且它的输出没有显示预期的 X 编号。我是不是在调用 join 函数时出错了还是什么?感谢您的帮助。
P.S:我尝试了从 5 到 20 的各种 X 值,但它总是给我小于所需的 X 数。
您在 print_char()
中递增 i
两次。
改变
for (int i=0; i< p->count; i++)
{
cout<< p->symbol_char <<endl;
i++;
}
进入
for (int i=0; i< p->count; i++)
{
cout<< p->symbol_char <<endl;
}
我已经以相当基本的方式实现了 PThreads:
#include<iostream>
#include<pthread.h>
#include<stdio.h>
using namespace std;
class ThreadParameter
{
public:
char symbol_char;
int count;
};
void* print_char (void* param)
{
ThreadParameter* p = (ThreadParameter*)param;
for (int i=0; i< p->count; i++)
{
cout<< p->symbol_char <<endl;
i++;
}
return NULL;
}
int main ()
{
pthread_t thread1_id;
ThreadParameter param1;
param1.symbol_char = 'X';
param1.count = 27;
pthread_create (&thread1_id, NULL, &print_char, ¶m1);
int i = 0;
while (i<10)
{
cout<<"O"<<endl;
i++;
}
pthread_join(thread1_id,NULL);
return 0;
}
而且它的输出没有显示预期的 X 编号。我是不是在调用 join 函数时出错了还是什么?感谢您的帮助。
P.S:我尝试了从 5 到 20 的各种 X 值,但它总是给我小于所需的 X 数。
您在 print_char()
中递增 i
两次。
改变
for (int i=0; i< p->count; i++)
{
cout<< p->symbol_char <<endl;
i++;
}
进入
for (int i=0; i< p->count; i++)
{
cout<< p->symbol_char <<endl;
}