c ++中的线程问题

时间:2014-05-06 16:51:36

标签: c++ multithreading

我是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>>表达式中。当我删除它时,我的代码工作正常。

0 个答案:

没有答案