#include <pthread.h>
#include <stdio.h>
#include <sys/time.h>
#include <string.h>
#include <unistd.h>
#define MAX 10
pthread_t thread[2];
pthread_mutex_t mut;
int number=0, i;
void *thread1(void *)
{
printf ("thread1 : I'm thread 1\n");
for (i = 0; i < MAX; i++)
{
sleep(2);
printf("thread1 : number = %d\n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
}
printf("thread1 :the main function is waiting for me?\n");
pthread_exit(NULL);
}
void *thread2(void *)
{
printf("thread2 : I'm thread 2\n");
for (i = 0; i < MAX; i++)
{
sleep(3);
printf("thread2 : number = %d\n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
}
printf("thread2 :the main function is waiting for me? \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("Thread 1 fail to create!\n");
else
printf("Thread 1 created!\n");
if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3
printf("Thread 2 fail to create!");
else
printf("Thread 2 created!\n");
}
void thread_wait(void)
{
/*等待线程结束*/
if(thread[0] !=0) { //comment4
pthread_join(thread[0],NULL);
printf("Thread 1 completed\n");
}
if(thread[1] !=0) { //comment5
pthread_join(thread[1],NULL);
printf("Thread 2 completed.\n");
}
}
int main()
{
/*用默认属性初始化互斥锁*/
pthread_mutex_init(&mut,NULL);
printf("Main function,creating thread...\n");
thread_create();
printf("Main function,waiting for thread end....\n");
thread_wait();
return 0;
}
运行结果:
- 大小: 13.8 KB
分享到:
相关推荐
在Linux环境下进行C语言多线程编程,可以利用POSIX线程库(pthread),这是一个跨平台的线程API,能够支持多种操作系统,包括Linux。在这个简单的实例中,我们将学习如何创建、同步和管理多线程。 首先,我们需要...
具体到"Linux epoll多线程编程实例",在MyLinuxThread这个项目中,我们可以预见到以下关键部分: 1. **线程池设计**:可能采用了线程池来管理多个工作线程,线程池中的线程负责处理来自epoll的事件。 2. **事件...
《MyLinuxThread.txt》文件可能包含了一个关于如何在Linux上使用epoll和线程池进行编程的实例,这将有助于加深对这一主题的理解。 总结来说,Linux的epoll多线程编程能够有效地提升高并发场景下的系统性能,通过...
"linux_code.rar"这个压缩包包含了一些关于Linux多线程编程的源码示例,这对于初学者来说是一份宝贵的教育资源。 1. **线程概念**: 线程是操作系统分配处理器时间的基本单元,它是程序中的执行流。与进程相比,...
在Linux环境下进行C语言多线程编程,可以利用POSIX线程库pthread,它提供了创建、同步和管理线程的功能。以下将详细讲解本实例中涉及的多线程编程概念和关键技术。 首先,多线程是指在一个进程中创建多个执行线程,...
在Linux环境下,C语言多线程编程是一种常见的技术,用于编写能够同时执行多个任务的程序。这篇文档通过一个简单的实例展示了如何在C语言中创建和管理线程。下面我们将详细讨论这个实例中的关键知识点。 首先,多...
本文将通过一个简单的实例来介绍如何在Linux下使用C语言进行多线程编程。 首先,我们要引入必要的头文件,如`<pthread.h>`用于线程操作,`<stdio.h>`用于输入输出,`<sys/time.h>`用于时间操作,`<string.h>`用于...
总的来说,这个C语言多线程编程实例展示了如何在Linux环境下创建、同步和管理线程,以及如何利用互斥锁解决并发访问共享资源时的冲突问题。这个基本的实例可以作为进一步学习多线程编程的基础,通过修改和扩展,可以...
在嵌入式Linux系统中,应用程序的开发是一个关键环节,特别是在涉及多线程编程时,开发者需要深入理解操作系统内核、内存管理以及并发执行的概念。本章“嵌入式Linux应用程序开发详解第9章(多线程编程)”将为我们...
Linux 多线程创建实验 本实验的目的是为了进一步掌握在 Linux 系统进行 C 语言编程的方法,进一步了解线程的概念,进一步理解进程与线程的概念,并掌握 C 语言线程创建的方法。 实验原理: 1. Pthread_create ...
总结,Linux上的多进程和多线程编程涉及复杂的同步互斥操作,开发者需要理解各种同步机制,根据具体需求选择合适的方法。通过阅读和学习提供的源代码,可以加深对这些概念的理解,提升实际开发能力。
在C语言多线程编程中,线程同步是控制多个线程在执行时,按照一定的顺序来访问某些共享资源,避免多个线程同时对同一个资源进行操作,造成资源的不一致或竞争条件。在给定文件中,我们看到了多线程编程的实例,包含...
在C语言中,多线程编程是通过POSIX线程库(pthread)来实现的,它允许在一个进程中同时执行多个线程。在这个实例中,我们看到了如何在Linux环境下使用C语言创建和管理线程。 首先,引入了必要的头文件,如`...
本篇文章将深入探讨Linux环境下多线程编程的基础知识和实例解析。 线程作为轻量级进程,与传统的进程相比,其主要优势在于资源利用率高和通信效率高。创建线程比创建进程所需的资源少得多,因为线程共享同一进程的...
内容概要:本文档提供了一份详细的实验指导书,介绍了Linux下多线程编程的技术及其应用场景。文档首先概述了创建、终止、回收、分离线程的方式,重点讲解了 pthread 库中相关函数的使用方法。此外,还探讨了如何使用...
在Linux系统中,C语言进行多线程编程...这个实例代码提供了一个基础的多线程编程模型,展示了如何在Linux环境下使用C语言实现线程的创建、同步以及销毁。在实际应用中,多线程编程可以用于并发处理任务,提高系统效率。
在本篇中,我们将深入探讨如何使用Linux网络编程技术,特别是epoll和多线程机制,来构建一个简单的跨平台聊天应用。这个应用涉及到Linux服务器端和Windows客户端的交互,让我们逐一解析其中的关键知识点。 首先,`...
本文将深入探讨Linux环境下的C语言多线程编程,并通过一个具体的实例来演示如何创建和管理线程。 首先,我们要了解在Linux中,多线程的实现依赖于POSIX线程库,简称pthreads。`<pthread.h>`头文件包含了所有关于...
为了更好地抽象出多线程编程的核心概念,可以尝试定义一个通用的线程类,该类可以在不同的操作系统平台上工作。 #### 四、线程的生命周期与控制 了解了线程的基本概念后,我们还需要掌握如何控制线程的生命周期,...