Linux多线程编程

#include

#include

#include

#include

#define MAX 10

pthread_t thread[2];

pthread_mutex_t mut;

int number=0, i;

void *thread1()

{

printf ("thread1 : I'm thread 1n");

for (i = 0; i < MAX; i++)

{

printf("thread1 : number = %dn",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 2n");

for (i = 0; i < MAX; i++)

{

printf("thread2 : number = %dn",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;

}

(0)

相关推荐

  • linux多线程编程详解教程

    这篇文章主要介绍了linux多线程编程详解教程,提供线程通过信号量实现通信的代码,大家参考使用吧 线程分类 线程按照其调度者可以分为用户级线程和核心级线程两种。 (1)用户级线程 用户级线程主要解决的 ...

  • Linux下如何实现shell多线程编程以提高应用程序的响应

    Linux中多线程编程拥有提高应用程序的响应、使多cpu系统更加有效等优点,下面小编将通过Linux下shell多线程编程的例子给大家讲解下多线程编程的过程,一起来了解下吧。 #!/bin/bash ...

  • 在Linux系统上进行openmp多线程编程的方法

    OpenMP是一种多处理器多线程的编程语言,能够支持多个平台,包括Linux系统,那么Linux下要如何进行openmp多线程编程呢?一起来了解下吧。 关键语法: 代码如下: #inlcude 《om ...

  • Linux下的多线程编程和fork()函数详解

     一.fork()函数 在操作系统的基本概念中进程是程序的一次执行,且是拥有资源的最小单位和调度单位(在引入线程的操作系统中,线程是最小的调度单位).在Linux系统中 创建进程有两种方式:一是由操作 ...

  • 怎样在Linux下编程

    与 Windows 系统相比,在 Linux 下编程似乎要稍微繁琐一些.那么,怎样在 Linux 中编写并生成可执行文件呢? 下面,就以使用人数较多的 CentOS 下编写 C/C++ 程序为例,来向 ...

  • MFC多线程编程实例

    一般情况下,调用AfxBeginThread()来一次性地创建并启动一个线程,但是也可以通过两步法来创建线程:首先创建CWinThread类的一个 对象,然后调用该对象的成员函数CreateThrea ...

  • java实现多线程编程

    操作方法 01 本文详细讲述一下Java实现多线程编程的三种方法,多线程领域里实现多线程编程的总体思路就是重构run()方法以实现自己所需的功能,然后创建线程对象调用start()方法来启动线程,然后 ...

  • MFC对多线程编程的支持

    摘要:关于MFC对多线程编程的支持深入研究. 步骤/方法 01 例程3 MultiThread3 传送一个结构体给一个线程函数也是可能的,可以通过传送一个指向结构体的指针参数来完成.先定义一个结构体: ...

  • Linux系统下Shell多线程编程的实例

    #!/bin/bash #———————————————————————————– # 此例子说明了一种用wait、read命令模拟多线程的一种技巧 # 此技巧往往用于多主机检查,比如ssh登录、pi ...