• 多线程实例 同步锁


    多线程实例 :lp.c

    #include <pthread.h>
    #include
    <stdio.h>
    #include
    <sys/time.h>
    #include
    <string.h>
    #define MAX 10

    pthread_t thread[
    2];
    pthread_mutex_t mut;
    int number=0, i;

    void *thread1()
    {
    printf (
    "thread1 : I'm thread 1\n");
    for (i = 0; i < MAX; i++)
    {
    printf(
    "thread1 : number = %d\n",number);
    pthread_mutex_lock(
    &mut);
    number
    ++;
    pthread_mutex_unlock(
    &mut);
    sleep(
    2);
    }
    printf(
    "thread1 :主函数在等我完成任务吗?\n");

    pthread_exit(NULL);

    }

    void *thread2()
    {
    printf(
    "thread2 : I'm thread 2\n");
    for (i = 0; i < MAX; i++)
    {
    printf(
    "thread2 : number = %d\n",number);
    pthread_mutex_lock(
    &mut);
    number
    ++;
    pthread_mutex_unlock(
    &mut);
    sleep(
    3);
    }
    printf(
    "thread2 :主函数在等我完成任务吗?\n");
    pthread_exit(NULL);
    }


    void thread_create(void)
    {
    int temp;
    memset(
    &thread, 0, sizeof(thread)); //comment1
    //创建线程
    if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) //comment2
    printf("线程1创建失败!\n");
    else
    printf(
    "线程1被创建\n");
    if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3
    printf("线程2创建失败");
    else
    printf(
    "线程2被创建\n");
    }

    void thread_wait(void)
    {
    //等待线程结束
    if(thread[0] !=0) { //comment4
    pthread_join(thread[0],NULL);
    printf(
    "线程1已经结束\n");
    }
    if(thread[1] !=0) { //comment5
    pthread_join(thread[1],NULL);
    printf(
    "线程2已经结束\n");
    }
    }

    int main()
    {
    //用默认属性初始化互斥锁
    pthread_mutex_init(&mut,NULL);
    printf(
    "我是主函数哦,我正在创建线程,呵呵\n");
    thread_create();
    printf(
    "我是主函数哦,我正在等待线程完成任务阿,呵呵\n");
    thread_wait();
    return 0;
    }

      

    编译 :

           gcc -lpthread -o thread_example lp.c

  • 相关阅读:
    [CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口
    [CXF REST标准实战系列] 一、JAXB xml与javaBean的转换
    项目中使用百度地图遇见的问题
    工作体会(第一次工作)
    第一家公司面试
    自我总结(九)---
    J2EE 第二阶段项目(八)
    J2EE 第二阶段项目之编写代码(六)
    J2EE 第二阶段项目之JUnit4进行单元测试(五)
    J2EE 第二阶段项目之编写代码(四)
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2082287.html
Copyright © 2020-2023  润新知