我倾尽 2020-04-21 17:05 采纳率: 0%
浏览 409

Linux怎样实现多线程编程,怎样实现并发执行

用下面这个代码的案例改成并发执行

#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
int counter=0;
void *p1(void *param);
void *p2(void *param);
int main(){
    pthread_t tid1, tid2;
    pthread_attr_t attr1,attr2;
    pthread_attr_init(&attr1);
    pthread_attr_init(&attr2);
    pthread_create(&tid1,&attr1,p1,NULL);
        pthread_join(tid1,NULL);
    pthread_create(&tid2,&attr2,p2,NULL);
    pthread_join(tid2,NULL);
    printf("counter=%d\n",counter);
    return 0;
}
void *p1(void *param){ 
    int i;
    for (i=0;i<10;i++){
        int icopy=counter;
        sleep(1);
        icopy++;
        sleep(1);
        counter=icopy;
    }
}
void *p2(void *param){
    int i;
    for (i=0;i<10;i++){
        int icopy=counter;
        sleep(1);
        icopy++;
        sleep(1);
        counter=icopy;
    }
}
  • 写回答

2条回答 默认 最新

  • Huoon 2020-04-21 22:17
    关注
        pthread_create(&tid1,&attr1,p1,NULL);
        pthread_join(tid1,NULL);
        pthread_create(&tid2,&attr2,p2,NULL);
        pthread_join(tid2,NULL);
    
            // 修改如下
          pthread_create(&tid1,&attr1,p1,NULL);
        pthread_create(&tid2,&attr2,p2,NULL);
            pthread_join(tid1,NULL);
        pthread_join(tid2,NULL);
    
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog