需要引入头文件 #include<pthread.h>
1.创建线程
int
pthread_create(pthread_t *pid,const phread_attr_t *attr,void *(*handler)(void *),void *hand_attr);
(1)pid 表示创建线程的id指针
(2)attr表示线程的属性,如果为NULL,表示默认设置
(3)handler表示一个回调函数,即线程所要运行的函数
(4)hand_attr 表示回调函数参数地址
返回值类型为int ,0 表示创建成功,非0表示不成功。
2.等待线程结束
int
pthread_join(pthread_t *pid,void **value_ptr)
(1)pid 表示创建的线程的id指针
(2)value_ptr 表示返回值地址指针存放位置的指针
返回类型为int , 0表示结束成功,非0表示不成功。
3.线程结束
void pthread_exit(void *value_ptr)
(1)value_ptr 表示返回值指针
例子
#include <stdio.h>
#include <pthread.h>
void * handler1(void *arg)
{
int i;
for(i=0;i<3;i++)
{
printf("handler1\n");
sleep(1);
}
}
void * handler2(void *arg)
{
int i;
for(i=0;i<4;i++)
{
printf("handler2\n");
sleep(1);
}
}
int main(int argc, char *argv[])
{
//声明2个线程id
pthread_t pid1;
pthread_t pid2;
//创建2个线程
printf("begin\n");
if(pthread_create((pthread_t *)&pid1,NULL,(void*)handler1,NULL))
{
printf("can't create new thread\n");
return -1;
}
if(pthread_create((pthread_t *)&pid2,NULL,(void*)handler2,NULL))
{
printf("can't create new thread\n");
return -1;
}
//等待2个线程结束
if(pthread_join(pid1,NULL))
{
printf("can't join thread\n");
return -1;
}
if(pthread_join(pid2,NULL))
{
printf("can't join thread\n");
return -1;
}
printf("over\n");
return 0;
}
linux 编译与运行
运行结果
- 大小: 860 Bytes
- 大小: 725 Bytes
分享到:
相关推荐
多线程从基础讲起,包括线程基础、线程属性、互斥量、共享内存、条件变量。
线程C语言封装库是一种专为C语言设计的线程管理工具,它使得开发者能够在C程序中方便地创建和管理线程,同时提供了跨平台的支持。这个库的重要性在于,C语言作为基础且广泛使用的编程语言,往往需要处理多任务并发...
### Linux多线程 C语言编程知识点总结 #### 一、多线程与多进程编程概述 **多线程**的概念可以追溯到20世纪60年代,然而直到80年代中期,这一机制才被正式引入到Unix系统中。随着计算机硬件的发展及软件需求的增加...
随后,重点讲解了C语言中多线程编程的基础,包括使用POSIX线程库(pthreads)创建、管理和控制线程的方法。接着,深入探讨了线程同步机制,如互斥锁、条件变量、读写锁和自旋锁的工作原理及具体应用示例。此外,还...
在C语言中实现多线程文件加密是一种提升程序性能的有效方式,特别是在Windows平台上。这个压缩包文件包含了关于C语言编程、多线程技术以及文件加密的一些关键知识点。 首先,我们来了解一下C语言。C语言是一种广泛...
Windows 环境下 C 语言多线程实现网络编程多人聊天室总结 在 Windows 环境下实现多人聊天室需要使用 C 语言和多线程技术来实现网络编程。下面是关于这个主题的知识点总结: 第一部分:Windows Socket 编程 * 使用...
#### 一、线程基础知识概述 线程是操作系统能够进行运算调度的最小单位,它是进程的一部分。简单来说,一个进程可以拥有多个线程,这些线程共享进程的资源(如内存),但每个线程都有自己的独立栈空间和寄存器状态...
在Windows操作系统中,C语言可以用来创建和管理多线程应用程序。`win32多线程例子(c语言)`这个项目就是一个很好的起点,...掌握这些基础知识,初学者就能开始构建更复杂的多线程应用,提升程序的运行效率和用户体验。
标题:多线程编程基础 描述与标签:多线程编程基础.pdf 在现代软件开发中,多线程编程已经成为了一项不可或缺的技能。多线程编程是指在单个程序中同时运行多个线程(Thread),每个线程都可以独立执行程序的一部分...
C语言多线程中变量累加问题的分析 在C语言中,多线程编程是非常重要的概念之一。多线程编程可以提高程序的执行效率、提高响应速度、改善用户体验等。但是,多线程编程也存在一些问题,比如变量累加问题。在本文中,...
### C语言多线程编程教程 POSIX线程库 ...通过上述基本概念和示例,我们已经为深入学习C语言多线程编程奠定了坚实的基础。接下来的章节将更详细地探讨线程同步机制、线程安全性和高级多线程编程技术。
在IT行业中,C语言是一种基础且强大的编程语言,尤其在系统级编程和嵌入式领域中广泛应用。本项目“C语言实现聊天室线程代码”是利用C语言编写的一个聊天程序,它涉及到网络通信(TCP/UDP)以及多线程技术,这些都是...
一、MFC多线程基础 MFC通过CWinThread类支持多线程。每个线程都是一个独立的执行路径,拥有自己的堆栈和上下文。CWinThread是所有MFC线程的基类,负责线程的创建、调度和管理。创建新线程时,通常需要继承CWinThread...
在C语言中实现多线程,可以使用POSIX线程库(pthread),它提供了创建、同步、管理线程的相关函数。以下是一个简单的C语言多线程框架示例: ```c #include #include #include // 定义线程函数原型 void* thread...
### 基于UDP的Socket程序:多线程操作,Windows下的C语言实现 #### 概述 本文将深入分析一个使用C语言在Windows环境下编写的UDP Socket程序,该程序支持多线程并发操作,实现了数据包的发送与接收功能。通过对给定...
#### 一、多线程基础知识 在Linux环境下,利用C语言进行多线程编程是一种常见的技术手段,它能够有效地提高程序的并发处理能力,充分利用现代多核处理器的计算资源。在本篇文章中,我们将深入分析一个多线程示例,...
在这个"udp.rar"压缩包里,包含的是使用C语言在Linux环境下编写的UDP客户端(udpcli.c)和服务器(udpser.c)程序,以及一个可能包含项目资源或说明的文本文件(www.pudn.com.txt)。 1. UDP协议基础:UDP是一种...
本教程通过基础例程帮助初学者理解和掌握Linux线程的创建、管理和同步机制。 1. **线程创建**: 在Linux中,线程的创建通常使用POSIX线程库(pthread),其中`pthread_create()`函数用于创建新线程。参数包括线程...
一、基础知识:线程和进程 在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持 SMP 以及减小(进程/线程)上下文切换开销。一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如 cpu、...
接下来是"C__多线程基础.doc",这个文档可能涉及以下基础概念: 1. **线程优先级**:每个线程都有一个优先级,系统会根据优先级决定哪个线程先执行。但需要注意,线程优先级并不是绝对的执行顺序保证。 2. **死锁...