`
waret
  • 浏览: 139687 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

Linux编程笔记

阅读更多

1. vim使用
    "$": 将光标移动到行尾
    "^": 将光标移动到行首
    "%": 匹配下一个括号
    "0": 将光标移动到绝对行首

2. 进程休眠
    sleep(int sec): 睡眠sec秒
    usleep(int usec): 睡眠usec微妙

3. 关于Linux下pthread库
    有许多人认为在局部域里面声明的pthread_mutex_t类型的变量,也局部的,这种想法是错误的,原因在于,在Linux的环境下,我们声明 pthread_mutex_t类型的变量其实已经默认是一个static的而且在kernel空间范围的一个结构,就是说别的进程以及线程其实也是。

4. 关于STL的线程安全问题
    STL线程安全的概念是:多个线程同时读是安全的。a线程创建容器,可以安全的在其他线程读写。但是,线程安全不包括互斥的语意,因此,多个线程同时修改容器的话,必须互斥。
    STL标准是没有规定必须是线程安全的。所以PJ STL(VC++)的STL是非线程安全的,需要用户自己保证线程安全;而SGI STL(G++)的STL是线程安全的,不需要用户自己保证线程安全。
    在所有的主流STL实现方案中,几乎所有的容器都是线程安全的:
    1).一个线程读写一个实例时,另一个线程可以读写另一个实例。
    2).多个线程可以在同时读同一个container。
    3).多个线程读写同一个container时,你应该负责安排互斥性操作。

《Effective   STL》
    条款12:对STL容器线程安全性的期待现实一些
    标准C++的世界是相当保守和陈旧的。在这个纯洁的世界,所有可执行文件都是静态链接的。不存在内存映射文件和共享内存。没有窗口系统,没有网络,没有数据库,没有其他进程。在这种情况下,当发现标准没有提到任何关于线程的东西时你不该感到惊讶。你对STL的线程安全有的第一个想法应该是它将因实现而不同。
    当然,多线程程序是很普遍的,所以大部分STL厂商努力使他们的实现在线程环境中可以正常工作。但是,即使他们做得很好,大部分负担仍在你肩上,而理解为什么会这样是很重要的。STL厂商只能为你做一些可以减少你多线程的痛苦的事情,你需要知道他们做了什么。
    在STL容器(和大多数厂商的愿望)里对多线程支持的黄金规则已经由SGI定义,并且在它们的STL网站[21]上发布。大体上说,你能从实现里确定的最多是下列内容:
    多个读取者是安全的。多线程可能同时读取一个容器的内容,这将正确地执行。当然,在读取时不能有任何写入者操作这个容器。
    对不同容器的多个写入者是安全的。多线程可以同时写不同的容器。
    就这些了,那么让我解释你可以期望的是什么,而不是你可以确定的。有些实现提供这些保证,但是有些不。

    写多线程的代码很难,很多程序员希望STL实现是完全线程安全的。如果是那样,程序员可以不再需要自己做并行控制。毫无疑问这将带来很多方便,但这也非常难实现。一个库可能试图以下列方式实现这样完全线程安全的容器:

    在每次调用容器的成员函数期间都要锁定该容器。
    在每个容器返回的迭代器(例如通过调用begin或end)的生存期之内都要锁定该容器。
    在每个在容器上调用的算法执行期间锁定该容器。(这事实上没有意义,因为,正如条款32所解释的,算法没有办法识别出它们正在操作的容器。不过,我们将在这里检验这个选项,因为它的教育意义在于看看为什么即使是可能的它也不能工作。)

分享到:
评论

相关推荐

    Linux系统编程笔记.pdf

    Linux系统编程笔记.pdfLinux系统编程笔记.pdfLinux系统编程笔记.pdfLinux系统编程笔记.pdf

    linux系统编程笔记

    Linux系统编程笔记涉及到的内容广泛,涵盖了从基础的出错处理到进程管理,从内存管理到进程间通信,以及守护进程设计等多个层面的知识。下面详细说明各个部分的知识点: 1. 常见出错处理 - abort函数用于异常终止...

    linux 网络编程笔记

    ### Linux网络编程基础知识点 #### 一、网络工具与协议概览 在Linux网络编程中,`netstat`是一个常用工具,用于显示网络连接、路由表、接口统计、masquerade连接、多播成员等信息。通过选项`-an`可以查看详细的...

    Linux学习笔记_Linux/Unix编程_

    Linux编程笔记,Linux开发必备,学习资料

    Linux Shell编程笔记

    描述:这是一份综合的Linux Shell编程笔记,适用于想要学习或加强对Linux操作系统下Shell脚本编程的理解的人。该笔记包含了Shell脚本的基础知识、常用命令和技巧,以及实际的编程示例和案例。无论您是初学者还是有...

    GNU_LINUX 系统编程笔记.pdf

    以上是基于《GNU/Linux系统编程笔记》中的知识点总结,涵盖了错误处理、I/O操作、文件目录管理、进程控制、线程、内存管理、IPC以及守护进程设计等关键领域,对于深入理解Linux系统编程有重要价值。

    马哥的linux学习笔记

    最后,笔记还涉及了一些高级话题,如脚本编程(bash shell script)、系统监控(如top、htop、iotop等)、性能调优和故障排查方法。这些内容有助于提升读者解决实际问题的能力。 综上所述,《马哥的Linux学习笔记》...

    Linux系统编程学习笔记

    ### Linux系统编程学习笔记 #### 一、IO **1.1 标准I/O (stdio)** - **fopen/fclose**: `fopen` 用于打开或创建一个文件,并返回一个指向该文件的 `FILE *` 类型的指针。`fclose` 用于关闭一个已经打开的文件。...

    linux编程学习笔记PDF资料下载.txt

    根据提供的文件信息,我们可以推断出这是一份关于Linux编程学习笔记的PDF资料。下面将对这份资料可能涉及的关键知识点进行详细的阐述。 ### Linux编程基础知识 #### 1. Linux操作系统概述 - **定义与特点**:Linux...

    linux系统编程和网络编程笔记

    linux系统编程和网络编程笔记

    Linux网络编程超级详细笔记

    Linux网络编程超级详细笔记 是一个不错的总结 可以借鉴一下

    linux 编程综合笔记

    经过长期在Linux下编程开发总结,把一些经常使用到的知识点代码块写出来供大家参考,里面包含了很多的知识,例如PCI开发,串口开发等等

    linux系统编程笔记docx.docx

    ### Linux系统编程核心知识点 #### 一、计算机系统组成与硬件结构 - **计算机系统硬件组成**: - **CPU**:中央处理器,包括运算器和控制器,负责指令的执行和控制系统的运行。 - **内存**:用于暂时存储运行中...

    linux笔记笔记笔记笔记

    以上就是“Linux笔记笔记笔记笔记”所涵盖的主要知识点,这些内容覆盖了Linux系统的基本操作、网络编程、脚本编写、版本控制等多个方面,对于提升Linux技能和解决实际问题大有裨益。学习并熟练掌握这些知识,能够...

    Linux编程精髓 部分笔记

    ### Linux编程精髓部分知识点 #### 用户级内存管理 在Linux编程中,用户级内存管理是极为重要的一个方面,它涉及...以上是对“Linux编程精髓部分笔记”所涉及知识点的详细解释和总结,希望对学习Linux编程有所帮助。

    Linux系统编程笔记

    ### Linux系统编程笔记知识点概述 #### 一、常见出错处理 在Linux系统编程中,正确处理错误是非常重要的。这不仅能够帮助开发者更好地理解程序的行为,还能提高程序的健壮性和稳定性。 ##### 1. `abort` 函数 - **...

    Linux系统编程笔记 pdf格式

    linux编程入门基础,比较简单基础,希望对初学者有所帮助

    马哥linux手写笔记

    【马哥Linux手写笔记】是一份由知名IT教育专家马永亮,即"马哥"编撰的Linux学习资料,这份笔记以其详实、深入和实用的特点深受广大Linux爱好者和学习者的推崇。马哥在业界享有盛誉,他的教学风格以通俗易懂和实战性...

Global site tag (gtag.js) - Google Analytics