`
yingyingol
  • 浏览: 745553 次
文章分类
社区版块
存档分类
最新评论

多线程编程(一):线程创建和退出

 
阅读更多

一、引言

二、实例
以下实例中创建了2个线程,其中第一个线程是在程序运行到中途时调用pthread_exit函数退出,第二个正常退出。在主线程中,收集这两个线程的退出信息,并释放资源。从实例可以看出,这两个线程是并发运行的。

/*thread.c*/
#include
#include

void thread1(void)
{
int i=0;
for(i=0;i<6;i++)
{
printf("This is a pthread1.\n");
if(i==2)
pthread_exit(0); //线程退出
sleep(3); //线程1睡眠,将CPU让给其它线程
}
}

void thread2(void)
{
int i;
for(i=0;i<3;i++)
printf("This is a pthread2.\n");
pthread_exit(0); //打印完以上三条语句后,直接退出
}

int main(void)
{
pthread_t id1,id2;
int i,ret;
ret=pthread_create(&id1,NULL,(void *) thread1,NULL); //创建线程1,线程2
if(ret!=0)
{
printf ("Create pthread error!\n");
exit (1);
}
ret=pthread_create(&id2,NULL,(void *) thread2,NULL);
if(ret!=0)
{
printf ("Create pthread error!\n");
exit (1);
}
pthread_join(id1,NULL); //等待线程结束
pthread_join(id2,NULL);
exit (0);
}

运行结果:
[root@localhost net]# ./thread
This is a pthread1.
This is a pthread2.
This is a pthread2.
This is a pthread2.
This is a pthread1.
This is a pthread1.

分享到:
评论

相关推荐

    实验二、嵌入式Linux多线程编程实验

    1. 熟悉线程的定义、创建及应用方法,掌握编译源代码时引入线程库的方法。 2. 掌握如何利用信号量完成线程间的同步与互斥。 3. 熟悉Makefile工作原理,掌握编写Makefile的编写方法。 二、实验基本要求 1. 掌握熟悉...

    Linux的多线程编程的高效开发经验

    多线程开发在 Linux 平台上已经有成熟的 Pthread 库支持。其涉及的多线程开发的最基本...为了方便熟悉 Windows 线程编程的读者熟悉 Linux 多线程开发的 API,我们在表中同时也列出 Windows SDK 库中所对应的 API 名称。

    C++11并发编程:多线程std::thread

    C++11引入了thread类,大大降低了多线程使用的复杂度,原先使用多线程只能用系统的API,无法解决跨平台问题,一套代码平台移植,对应多线程代码也必须要修改。现在在C++11中只需使用语言层面的thread可以解决这个...

    linux的多线程编程的高效开发经验

    多线程开发在 Linux 平台上已经有成熟的 Pthread 库支持。其涉及的多线程开发的最基本概念主要包含三点:线程,互斥锁,条件。其中,线程操作又分线程的创建,退出,等待 3 种。互斥锁则包括 4 种操作,分别是创建,...

    VC 初级多线程编程实例源码集.rar

    个人整理的一些比较基础的VC 初级多线程编程实例集,包括安全终止线程、创建UI线程、创建Worker线程、等待线程结束、挂起和恢复线程、获得线程的退出码、使用互斥量、使用临界区、使用信号量等内容,相信对VC 初学者...

    iOS多线程编程指南

    1 第一章 关于多线程编程 .......................................................................................................................... 2 1.1 什么是多线程....................................

    VS2010 同步TCP SOCKET应用编程 服务器 客户端 消息解析 多线程

    利用TCP协议和同步套接字以及多线程编写 在监听线程中,服务器一旦接受一个连接,就创建一个与该玩家对应的线程,用于接收该玩家发送的信息,并根据该玩家发送的信息提供相应的服务。 有多少个玩家连接,就创建多少...

    linux系统编程之线程.zip

    【练习】:编写多线程程序,总结exit、return、pthread_exit各自退出效果。 return:返回到调用者那里去。 pthread_exit():将调用该函数的线程 exit: 将进程退出。 pthread_join函数 阻塞等待线程退出,获取...

    Python中多线程的创建及基本调用方法

    Python中提供几个用于多线程编程的模块,包括thread,threading和Queue等 thread模块提供了基本的线程和锁的支持,除产生线程外,也提供基本的同步数据结构锁对象,其中包括: start_new_thread(function, args ...

    网络编程实用教程(第三版).zip

    7.1 WinSock为什么需要多线程编程 188 7.1.1 WinSock的两种I/O模式 188 7.1.2 两种模式的优缺点及解决方法 189 7.2 Win32操作系统下的多进程多线程机制 189 7.2.1 Win32 OS是单用户多任务的操作系统 189 ...

    android 网络应用轻量框架-多线程管理-高效缓存-设计模式

    6:使用状态模式 观察者模式更好的处理多线程 最初的想法:网络优化开发框架 (移除任务未完成) 网络稳定,系统运行稳定性,大内存消耗稳定,长时间运行稳定性 (旧的系统症结所在) 开启过多线程,导致系统...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第2部分)

    这本精品书籍浓墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地创建基于任务的并行应用程序,详细讲述最新的单指令、多数据流指令和向量化等并行编程技术,介绍现代并行库,讨论如何珠联璧合...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第一部分)

    这本精品书籍浓墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地创建基于任务的并行应用程序,详细讲述最新的单指令、多数据流指令和向量化等并行编程技术,介绍现代并行库,讨论如何珠联璧合...

    Linuxc 信号的使用

    1.编程实现以下功能: 主线程实现以下功能: ① 定义全局变量key; ② 创建两个线程; ③ 如果线程正常结束,得到线程的结束状态值,并打印; 线程一完成以下操作: ...用多线程实现生产者消费者:

    linux网络编程课程设计

    服务器:为每个客户连接创建一个进程或线程,处理客户信息,当有新客户加入或有客户退出时,将客户加入或退出信息发送给每个客户端;当收到某客户的群发信息时,将信息转发给每个客户,当收到客户私聊时将信息转发给...

    Python核心编程第二版

     7.6.1 如何创建集合类型和给集合赋值   7.6.2 如何访问集合中的值   7.6.3 如何更新集合   7.6.4 如何删除集合中的成员和集合   7.7 集合类型操作符   7.7.1 标准类型操作符(所有的集合类型)  ...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第3部分)

    这本精品书籍浓墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地创建基于任务的并行应用程序,详细讲述最新的单指令、多数据流指令和向量化等并行编程技术,介绍现代并行库,讨论如何珠联璧合...

    在线电子词典

    linux 下的多进程多线程编程;4.多文件编程技术;5.多进程间通信;6.链表的使用。 项目描述: 1. 该项目由 client 程序和 server 程序组成; 2. 服务器端可以群发系统消息,群发客户的登陆以及退出通知; 3. 当...

    VISUAL C++实效编程280例

    第1章 窗口 1.1 实例1:通过HWND获得CWnd指针 1.2 实例2:获得应用程序主窗口的指针 ...第10章 多线程 第11章 网络 第12章 ADO数据库 第13章 动态链接库 第14章 系统 第15章 设备管理 第16章 数据类型及转换 ......

    statisticsCalculator_Multithreaded.c:CSci423 的作业 #2

    CSCI423 编程作业 2 编写一个多线程程序,计算一系列数字的各种统计值。 该程序将在命令行上传递一系列数字,然后将创建三个独立的工作线程。 一个线程将确定数字的平均值,第二个将确定最大值,第三个将确定最小值...

Global site tag (gtag.js) - Google Analytics