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;
    }
}
    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);

LINUX线程本来就是并发的呀。

你的意思是不是线程同步?就是A B两个线程依次循环进行?
如果是的话,使用下面的函数:
pthread_cond_wait
pthread_cond_signal
具体用法直接百度,很多。

如果不是的话,当我没说。