多线程
文章平均质量分 79
laismith
硕士在读,兴趣领域:计算机视觉、机器学习、自动控制,C/C++,python,opencv,Linux等
展开
-
eclipse下添加GCC编译器的编译链接库以及程序运行参数方法
eclipse下添加GCC编译器的编译链接库在Linux下编写多线程程序,在调用pthread.h下的函数时需要添加链接库,如果是在命令行的环境下只需要在gcc命令后加上 -pthread就可以编译、连接通过,但是如何在eclipse下添加-pthread?不然会出现如下错误其实很简单,只要右击工程选择properties或者单击project ->properties也没原创 2015-10-16 15:10:31 · 12049 阅读 · 0 评论 -
Linux多线程基础学习(七)pthread一次性初始化
在多线程环境中,有些事仅需要执行一次。通常当初始化应用程序时,可以比较容易地将其放在main函数中。但当你写一个库时,就不能在main里面初始化了,你可以用静态初始化,但使用一次初始化(pthread_once)会比较容易些。 首先要定义一个pthread_once_t变量,这个变量要用宏PTHREAD_ONCE_INIT初始化。pthread_once_t once_cont原创 2015-10-20 19:31:09 · 858 阅读 · 0 评论 -
Linux多线程基础学习(五)线程同步-条件变量
条件变量(cond)互斥锁有明显的缺点只有lock和unlock状态。设计多任务时容易死锁,使用也不灵活。而条件变量引入了信号弥补了互斥锁的不足。 与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。 条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主原创 2015-10-20 15:59:08 · 538 阅读 · 0 评论 -
Linux多线程基础学习(四)线程的终止、连接、取消
线程终止:1、 如果进程中的任意一个线程调用了exit,_Exit,_exit,那么整个进程就会终止2、 从启动例程中返回,返回值是线程的退出码3、 线程可以被同一进程中的其他线程取消4、 线程调用pthread_exit(void *rval)函数,rval是退出码#include #include #include #include #include us原创 2015-10-16 14:18:26 · 1063 阅读 · 0 评论 -
Linux多线程基础学习(八)私有数据
在进程内的所有线程共享相同的地址空间,任何声明为静态或外部的变量,或在进程堆声明的变量,都可以被进程所有的线程读写。那怎样才能使线程序拥有自己的私有数据呢。posix提供了一种方法,创建线程键。1.为什么需要线程私有数据: 原因一:有时候需要维护基于每个线程的数据,用线程ID作为索引。因为线程ID不能保证是小而连续的整数,所以不能简单的分配一个线程数据数组,用线程ID作为数组原创 2015-10-21 18:44:52 · 1076 阅读 · 0 评论 -
Linux多线程基础学习(五)线程同步-读写锁
读写锁 基础概念通过读写锁,可以对受保护的共享资源进行并发读取和独占写入。读写锁是可以在读取或写入模式下锁定的单一实体。要修改资源,线程必须首先获取互斥写锁。必须释放所有读锁之后,才允许使用互斥写锁。对数据库的访问可以使用读写锁进行同步。读写锁支持并发读取数据库记录,因为读操作不会更改记录的信息。要更新数据库时,写操作必须获取互斥写锁。 在一些程序中存在读者写者问题,也就是说,原创 2015-10-20 21:14:21 · 542 阅读 · 0 评论 -
Linux多线程基础学习(六)线程属性
应该是Linux不希望用户在新建用户线程的时候可以直接访问线程属性的数据成员,因为可能用户在这里设置了未定义的数值导致线程奔溃,用户只能通过调用Linux提供的结构体的初始化函数对其进行变量初始化。这样做的好处在下文中会说明。通过设置属性,可以指定一种不同于缺省行为的行为。使用pthread_create()创建线程时或初始化同步变量时,可以指定属性对象。一般情况下pthread_create属性参数缺省值通常就足够了。原创 2015-10-20 13:23:25 · 470 阅读 · 0 评论 -
Linux多线程基础学习(五)线程同步-同步概念、互斥锁
线程同步中对同步的理解对于多线程程序来说,同步(synchronization)是指在一定的时间内只允许某一个线程访问某个资源。而在此时间内,不允许其它的线程访问该资源。 “同”字从字面上容易理解为一起动作其实不是,“同”字应是指协同、协助、互相配合。如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;原创 2015-10-19 21:52:01 · 829 阅读 · 0 评论 -
Linux多线程基础学习(三)线程生命周期
初始线程/主线程 1、当c程序运行时,首先运行main函数。在线程代码中,这个特殊的执行流被称作初始线程或者主线程。你可以在初始线程中做任何普通线程可以做的事情。2、主线程的特殊性在于,它在main函数返回的时候,会导致进程结束,进程内所有的线程也将会结束。这可不是一个好的现象,你可以在主线程中调用pthread_exit函数,这样进程就会等待所有线程结束时才终止。3、主线程接受参原创 2015-10-13 21:34:13 · 2087 阅读 · 0 评论 -
Linux多线程基础学习(一)基本概念
进程与线程的一些基本概念原创 2015-10-06 22:33:52 · 588 阅读 · 0 评论 -
Linux多线程基础学习(二)创建新的线程
多线程基础学习(一)创建新的线程这次博客主要记录以下多线程知识内容(代码运行环境为Linux):获取Linux中进程与线程的ID创建一个新的线程理解一个进程中包含多个线程的实际案例进程与线程的ID收到 项目 进程 线程 标识符类型 pthread_t pid_t 获取id pthread_self() getpid() 创建 pthread_crea原创 2015-10-07 18:01:04 · 564 阅读 · 0 评论