我是C ++中使用线程的新手。
作为一个简单的例子,我需要编写一个程序来创建一个线程,询问用户的数字,一旦递增并在手中显示它。
这是我的解决方案:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <iostream>
using namespace std;
void *thread_1(void *arg) {
int i=0;
printf("We are in the thread\n");
printf("Put a number \n");
cin>>i;
i++;
cout<<"i== "<<i<<endl;
(void)arg;
pthread_exit(NULL);
}
int main() {
pthread_t thread1;
printf("Before creating the thread\n");
if(pthread_create(&thread1,NULL,thread_1,NULL)==-1) {
perror("pthread_create");
return EXIT_FAILURE;
}
if (pthread_join(thread1, NULL)) {
perror("pthread_join");
return EXIT_FAILURE;
}
printf("After creating the thread\n");
return 1;
}
当我运行它时,我得到以下结果:
Before creating the thread
We are in the thread
Put a number
当我输入数字时,程序冻结了。问题是什么?我注意到问题可能在cin>>
表达式中。当我删除它时,我的代码工作正常。