热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux多线程编程之基本控制

Linux多线程编程之基本控制

线程基本控制

1、线程创建

int pthread_create(pthread_t *pid,pthread_attr_t *attr,void *(start_routine)(void*),void *arg);

pthread_create创建一个线程,这个线程将执行函数start_routine,该函数的参数由arg提供,可以调用pthread_exit 终止线程或

函数执行完时终止。attr是线程属性,暂时先设置为NULL,后面讲。

每一个进程都共享一个地址空间和资源,它跟fork进程不同,每一个进程都有自己的地址空间和资源。

执行成功返回0,执行失败返回非0。

2、获取线程ID。

pthread_t *pthread_self();

3、结束线程

void pthread_exit(void *retval);

retval 是执行该函数的返回值,成功则0,失败返回-1。

4、挂起线程

int pthread_join(pthread_t *tid,void **thread_return);

该函数用于挂起线程,直至 该线程终止,tid是线程id,thread_return 是线程的返回值。

5、演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
 * =====================================================================================
 *
 *       Filename:  main.c
 *
 *    Description:  i
 *
 *        Version:  1.0
 *        Created:  02/18/2013 10:46:58 PM
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  WuShuai ,
 *           Blog:  imsiren.com
 *   Organization:
 *
 * =====================================================================================
 */
#include
#include
#include
voidrunner(void*arg){
        pthread_t t=pthread_self();
        printf("thread id:%x\n",(unsignedint)t);
}
intmain(){
        intarg=1000;
        void*ret;
        pthread_t tid[2];
        pthread_create(&tid[1],NULL,(void*)&runner,(void*)arg);
        pthread_create(&tid[2],NULL,(void*)&runner,(void*)arg);
  
        pthread_join(tid[1],&ret);
        pthread_join(tid[2],&ret);
        return0;
}

编译:
gcc -g -o thread main.c -lpthread

结果:
[root@s thread]# ./thread
thread id:b6d72b70
thread id:b7773b70

 

推荐阅读
  • 本文详细介绍了 Python 中字符串处理的各种技巧,包括查找、复制、替换、删除、截取、连接、比较、包含检测及大小写转换等操作。特别强调了如何使用 `strip()`、`lstrip()` 和 `rstrip()` 方法去除字符串中的空格和特殊符号,以及如何通过简单的赋值语句实现字符串的复制。此外,还提供了丰富的示例代码,帮助读者更好地理解和应用这些技巧。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • PotPlayer:一款卓越的多媒体视频播放器
    PotPlayer是一款功能强大的多媒体视频播放器,支持多种格式的音视频文件。其用户界面简洁直观,便于操作。除了基本的播放功能外,PotPlayer还提供了丰富的高级功能,如语音轨道切换(Alt+A)和播放速度调整,满足用户多样化的观看需求。此外,它还支持屏幕截图、字幕编辑和多音频流选择等功能,为用户提供更加全面的多媒体体验。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 2014年3月16日 长沙多所高校联合举办第三次学术交流活动
    2014年3月16日,长沙多所高校联合举办了第三次学术交流活动。此次活动旨在促进各高校间的学术合作与交流,吸引了众多师生参与。交流内容涵盖了计算机科学、工程技术等多个领域,为参会者提供了丰富的学习和讨论机会。 ... [详细]
  • 《过秦始皇陵》(创作于十五岁,另说二十一岁)——唐诗名家王维的原文翻译与赏析 ... [详细]
  • 《赠李秘书》译文与原文赏析:唐代诗人赵嘏的文学魅力 ... [详细]
  • PPT中被忽视的强大功能:棱台效果的巧妙运用 ... [详细]
  • 《为梦想不懈奋斗》年轻人心中总是充满着各式各样的憧憬与梦想,青春的誓言常常挂在嘴边。无论身处何地,年轻人都能展现出蓬勃的朝气与活力,而大学则是年轻人最为集中的地方,这里不仅是知识的殿堂,更是追梦的起点。在这里,无数青年学子为了实现自己的理想而努力拼搏,用实际行动诠释着奋斗的意义。 ... [详细]
  • 抖音“滑梯门”事件始末:详细解析与背景介绍
    近日,抖音平台上再次发生了一起备受关注的“滑梯门”事件。这一事件的具体经过和背后原因引起了众多用户的热议。为了帮助大家更好地了解这一事件,本文将详细解析其始末,并介绍相关背景信息。希望对感兴趣的读者有所帮助。 ... [详细]
  • Ant Design 版本中 Typography 等组件引入问题及解决方案
    本文探讨了在使用 Ant Design 时遇到的 Typography 等组件引入问题,主要原因是不同版本之间的不兼容性导致文档中的教程与实际安装的 Node 包内容不符。为了解决这一问题,建议将 Ant Design 更新至最新版本(4.x,注意 3.x 版本不兼容)。通过更新,可以确保所有组件和方法的正常运行,避免因版本差异带来的开发障碍。 ... [详细]
  • 如何在PHP中正确配置错误显示功能
    在PHP中正确配置错误显示功能的方法如下:首先,定位并打开“php.ini”配置文件;接着,将“display_errors”参数设置为“On”;最后,在PHP代码文件的顶部添加 `ini_set('display_errors', '1');` 以确保错误信息能够被正确显示。此外,建议在开发环境中启用此功能,而在生产环境中禁用,以避免敏感信息泄露。 ... [详细]
  • 总数 | 小规模算法动态规划第3讲:LeetCode 62 不同路径详解 | 从自顶向下到自底向上的动态规划方法分析
    总数 | 小规模算法动态规划第3讲:LeetCode 62 不同路径详解 | 从自顶向下到自底向上的动态规划方法分析 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 本文详细介绍了在 Vue.js 前端框架中集成 vue-i18n 插件以实现多语言支持的方法。通过具体的配置步骤和示例代码,帮助开发者快速掌握如何在项目中实现国际化功能,提升用户体验。同时,文章还探讨了常见的多语言切换问题及解决方案,为开发人员提供了实用的参考。 ... [详细]
author-avatar
x75066882
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有