063-C++中多线程的连接和分离

#include <iostream>
#include <cstdlib>
#include <pthread.h>
#include <unistd.h>

using namespace std;

#define NUM_THREADS 5

void *wait(void *t){
   int i;
   long tid;
   tid = *((int*)t);
   sleep(1);
   cout<<"Thread with id: "<<tid<<"....exit\n"<<endl;
   pthread_exit(NULL);
}

int main(int argc, char const *argv[]){
  int rc;
  int i;
  pthread_t threads[NUM_THREADS];
  pthread_attr_t attr;
  void *status;

  //初始化并设置线程为可连接的(joinable)
  pthread_attr_init(&attr);
  pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);

  for ( i = 0; i < NUM_THREADS; i++){
    rc = pthread_create(&threads[i], NULL, wait, (void*)&i);
    if (rc){
        cout<<"Error:unable to create thread, "<<rc<<endl;
        exit(-1);
    } 
  }
  // 删除属性 并等待其他线程
  pthread_attr_destroy(&attr);
  for ( i = 0; i < NUM_THREADS; i++){
    rc = pthread_join(threads[i], &status);
    if (rc) {
        cout<<"Error: unable to join,"<<rc<<endl;
        exit(-1);
    }
    cout << "Main: completed thread id: "<<i;
    cout<<" exiting with status: "<<status<<endl;
  }
  cout<<"Main:Program exiting.."<<endl;
  pthread_exit(NULL);
  return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值