欢迎来到入门教程网!

C语言

当前位置:主页 > 软件编程 > C语言 >

linux c多线程编程实例代码

来源:本站原创|时间:2020-01-10|栏目:C语言|点击:

直接看代码吧,代码里有注释

复制代码 代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define MAX 3

int number =0;
pthread_t id[2];
pthread_mutex_t mut; //初始化静态互斥锁

void thread1(void)
{
    int i;
    printf("Hello,I am pthread1!\n");
    for (i=0; i<MAX; i++)
    {
        pthread_mutex_lock(&mut);  //此处上锁,保证number的唯一性
            number ++;  
            printf("Thread1:number = %d\n",number);
        pthread_mutex_unlock(&mut);
        sleep(1);  //linux c下 sleep(minute),里面变量单位是分钟
    }
    pthread_exit(NULL); //线程通过执行此函数,终止执行。返回是一个空指针类型
}

void thread2(void)
{
    int j;
    printf("Hello,I'm pthread2\n");
    for(j=0; j<MAX; j++)
    {
        pthread_mutex_lock(&mut);
             number ++;
             printf("Thread2:number = %d\n",number);
        pthread_mutex_unlock(&mut);
        sleep(1);
    }
    pthread_exit(NULL);
}

void thread_create(void)
{
    int temp;
    memset(&id, 0, sizeof(id));
if(temp = pthread_create(&id[0], NULL, (void *)thread1, NULL)!= 0)
                          //参数:线程标识符指针 线程属性  线程运行函数起始地址  运行函数属性
                          //创建成功返回 0
        printf("Thread 1 fail to create!\n");
    else
        printf("Thread 1 created\n");
    if(temp = pthread_create(&id[1], NULL, (void *)thread2, NULL)!= 0)
        printf("Thread 2 fail to create!\n");
    else
        printf("Thread 2 created!\n");
 }  
void thread_wait()
{
    if(id[0] != 0)
    {
        pthread_join(id[0], NULL); //等待线程结束,使用此函数对创建的线程资源回收
        printf("Thread1 completed!\n");
    }
    if(id[1] != 0)
    {
        pthread_join(id[1], NULL);
        printf("Thread2 completed!\n");
    }
}
int main(void)
{
int i,ret1,ret2;
pthread_mutex_init(&mut, NULL); //动态互斥锁
    printf("Main fuction,creating thread...\n");
    thread_create();
    printf("Main fuction, waiting for the pthread end!\n");
    thread_wait();
    return (0);
}

上一篇:c++ dynamic_cast与static_cast使用方法示例

栏    目:C语言

下一篇:C语言可变参数函数详解示例

本文标题:linux c多线程编程实例代码

本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/3910.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有