`
Leif_冬
  • 浏览: 47474 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Linux C/C++ 學習報告(一)

阅读更多

A.關於線程調用的總結:

     A1:線程結束時的釋放

1.linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态,如果线程是joinable状态,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符(总计8K多)。只有当你调用了pthread_join之后这些资源才会被释放。若是unjoinable状态的线程,这些资源在线程函数退出时或pthread_exit时自动会被释放。

2.unjoinable属性可以在pthread_create时指定,或在线程创建后在线程中pthread_detach自己, 如:pthread_detach(pthread_self()),将状态改为unjoinable状态,确保资源的释放。或者将线程置为 joinable,然后适时调用pthread_join.

3.其实简单的说就是在线程函数头加上 pthread_detach(pthread_self())的话,线程状态改变,在函数尾部直接 pthread_exit线程就会自动退出。省去了给线程擦屁股的麻烦。

 

Example:

     

void *checkNetworkState(void *argv){
  int detachCode = pthread_detach(pthread_self());// 将状态改为unjoinable状态,确保资源的释放
  printf("checkNetworkState thread: detachCode = %d\n", detachCode);
  ......

  pthread_exit(0);
  return 0;
}

     

 

B.在C/C++ 中實現線程阻塞的方式:
         

{    
      struct timeval tv;
      tv.tv_sec = 0;
      tv.tv_usec = 200*1000;
      select(0, NULL, NULL, NULL, &tv);
}

    使用sleep(unsigned int seconds)会令目前的进程暂停,直到达到参数seconds 所指定的时间,或是被信号所中断.一般函數裏不推薦使用。

分享到:
评论

相关推荐

    linux c/c++基础学习资料(百度云链接和提取码)

    理解变量、数据类型、运算符、控制结构(如if-else、for、while)、函数、指针、数组、结构体等概念是C/C++学习的基石。对于C++,还需掌握类、对象、继承、多态、模板等特性。 “数据结构”是编程中的核心概念,...

    c/c++完整视频教程(三)——–Linux服务器编程

    根据提供的文件信息,本篇文章将围绕“C/C++完整视频教程(三)——Linux服务器编程”这一主题展开,深入解析该教程所涵盖的关键知识点。由于实际视频内容无法直接获取,以下解析将基于标题、描述及标签提供的信息...

    Unix/Linux C/C++编程学习

    同时学习LINUX和C/C++ Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式...

    linux C/C++超有用3

    "UNIX环境高级编程"这本书是学习Linux系统编程的经典之作,它深入讲解了如何利用C/C++在Unix/Linux环境下进行高效开发。 首先,Linux C/C++编程涉及到的知识点广泛,包括但不限于以下几个方面: 1. **标准库**:...

    Linux C/C++一站式学式

    "Linux C/C++一站式学习"涵盖了从基础到高级的多个方面,旨在帮助开发者全面掌握这两种语言在Linux环境下的应用。下面我们将深入探讨Linux环境下C和C++编程的一些关键知识点。 一、Linux开发环境搭建 1. 安装GCC...

    LINUX C/C++最佳开发工具

    在Linux环境下进行C/C++开发,选择一款高效且功能丰富的开发工具至关重要。本文将深入探讨Linux下C/C++的最佳开发工具,以及如何利用这些工具提升编程效率和代码质量。 Eclipse是一款广泛应用于软件开发的开源集成...

    Linux/C/C++函数中文使用手册

    提供的三个.chm文件——`cplusplus.chm`、`Linux C 函数.chm`、`C_C++中文函数手册.chm`,分别详细介绍了C++标准库、Linux下的C函数和C/C++的通用函数,是学习和查询函数用法的重要参考资料。 总的来说,这份资源...

    NI采集卡 linux下C/C++语言demo

    通过这些示例,开发者不仅可以学习到如何在Linux环境下使用C/C++与NI采集卡进行通信,还能了解到数据采集领域的常见设计模式和最佳实践。这对于那些希望在实验研究、自动化测试或工业控制等领域应用数据采集的工程师...

    linux C/C++超有用2

    在Linux环境中进行C/C++编程是一项重要的技能,尤其对于系统级开发者和软件工程师而言。Linux提供了丰富的工具和库,使得开发者能够充分利用操作...通过不断学习和实践,你可以成为一个精通Linux环境下的C/C++开发者。

    c/c++嵌入式开发与linux命令大全

    在"C/C++嵌入式开发与Linux命令大全"这一主题中,我们涵盖了两个主要领域:C/C++编程语言以及在Linux环境下进行嵌入式系统开发所使用的命令行工具。C和C++是底层编程的基石,广泛应用于嵌入式系统的开发,而Linux...

    linux C/C++ 数据库连接池

    在Linux环境下,C/C++开发数据库连接池是提高应用程序性能和效率的重要技术。数据库连接池是一种管理数据库连接...通过阅读和理解这些代码,开发者可以学习到如何在Linux下使用C/C++构建一个实用且高效的数据库连接池。

    编程及C/C++初学者 FAQ

    对于学习C/C++的新手而言,FAQ能够提供一种高效的学习途径,避免重复提问并节省时间。 ##### 2. 为什么需要这篇FAQ? 这篇FAQ针对的是准备学习或刚刚开始学习C/C++的初学者。它不仅仅是一份简单的问答文档,更是一...

    MinGW-w64 C/C++编译器+libsvm安装包.rar

    MinGW-w64是GCC(GNU Compiler Collection)在Windows平台上的一个移植版本,...用户不仅可以利用MinGW-w64进行常规的C/C++编程,还可以借助libsvm进行高级的机器学习实践,这对于学术研究和工业应用都具有很高的价值。

    C/C++ 常见误区

    例如,C在DOS和Linux中都可以使用,同样C++也能在Windows和Linux等平台上运行。 12. **学习深度**:掌握一门编程语言不仅仅是学习语法,还需理解数据结构、算法,并熟悉所使用的工具和平台API。 13. **语言复杂性...

    Linux C/C++后端开发学习路线图——对标腾讯T9

    腾讯后端T9开发学习路线图,内容路线非常详细。可以作为自身学习参考。 Linux C/C++ 后端开发学习路线。

    Linux C_C++后端服务器架构开发1

    这门课程旨在帮助学员建立一个全面的Linux C/C++后端服务器开发体系,从基础到高级,从理论到实践,通过学习可以掌握高性能服务器设计、网络编程、组件设计、中间件开发、性能分析以及分布式架构等关键技能。...

    linux C/C++实现的通过url访问网页提取网页文字内容

    总的来说,使用C/C++在Linux下实现通过URL访问网页提取文字内容是一个涉及网络编程、HTTP协议理解和HTML解析的综合性任务。通过学习和实践,你可以掌握这些技能,并构建自己的网络爬虫或Web客户端工具。

    linux和c/c++,makefile

    在这个压缩包中,"经典的linux和C语言"可能包含了一些经典的教程或者参考资料,比如讲解Linux系统编程的《Unix Network Programming》、《Advanced Linux Programming》等,或者关于C语言的《C Primer Plus》、《The...

    基于linux C/C++和Qt的聊天程序

    这个程序是一个聊天程序,客户端的开始是基于Qt,服务端的开发是基于linux C/C++,只要有linux操作系统,并且安装了Qt,编译就能够运行。运行的时候需要安装mysql数据库,希望多大家学习linux编程和C++编程有帮助。 ...

Global site tag (gtag.js) - Google Analytics