linux线程
文章平均质量分 81
酱油p
这个作者很懒,什么都没留下…
展开
-
linux线程——创建
Linux的线程实现是在内核以外来实现的,内核本身并不提供线程创建。但是内核为提供线程【也就是轻量级进程】提供了两个系统调用__clone()和fork (),这两个系统调用都为准备一些参数,最终都用不同的参数调用do_fork()核内API。do_fork()提供了很多参数,包括CLONE_VM(共享内存空间)、CLONE_FS(共享文件系统信息)、CLONE_FILES(共享文件描述符表)、C转载 2013-11-03 21:28:49 · 462 阅读 · 0 评论 -
如何理解*(void**)b
#include void main(){ int*p; inta=2; unsignedlong b=1245048; p=&a; printf("%d/n",*p); printf("%p/n",&a); printf("%d/n",&a); printf("转载 2013-11-12 15:16:38 · 421 阅读 · 0 评论 -
为什么出现漏洞
#include #include #include #include #define NUM_THREADS 6void *thread_function(void *arg);int main(){ int res; pthread_t a_thread[NUM_THREADS]; void *thread_result; int lots_of_threads; fo原创 2013-11-12 11:29:14 · 391 阅读 · 0 评论 -
linux线程——如何理解pthread_cond_wait和pthread_cond_signal
关于pthread_cond_wait()函数的理解 int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); 函数传入的参数mutex用于保护条件,因为我们在调用pthread_cond_wait时,如果条件不成立我们就进入阻塞,但是进入阻塞这个期间,如果条件变量改变了原创 2013-11-06 15:38:55 · 550 阅读 · 0 评论 -
linux线程——条件变量
条件变量是线程可用的另外一种同步机制。条件变量给多个线程提供了一个会合的场所。条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定的条件发生。 条件本身是由互斥量保护的。线程在改变条件状态前必须首先锁住互斥量,其他线程在获得互斥量之前不会察觉到这种改变,因为必须锁定互斥量以后才能计算条件。 条件变量使用之前必须首先进行初始化,pthread_cond_t数据类原创 2013-11-05 17:57:14 · 459 阅读 · 0 评论 -
linux线程——读写锁rwlock
前面我们在学习互斥锁mutex时候,mutex的状态只有两种——锁住or空闲。读写锁rwlock有三种状态:读模式枷锁,写模式加锁,不加锁。1. 特性: 一次只有一个线程可以占有写模式的读写锁, 但是可以有多个线程同时占有读模式的读写锁。正是因为这个特性,当读写锁是写加锁状态时,在这个锁被解锁之前, 所有试图对这个锁加锁的线程都会被阻塞。当读写锁在读加锁状态时,原创 2013-11-05 16:21:23 · 441 阅读 · 0 评论 -
linux线程——互斥锁mutex
同步线程中的互斥量(mutex)本质上来说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完以后进行释放互斥量上面的锁。一、创建与销毁注意:创建方式两种,销毁方式只有一种。 有两种方式创建锁——动态和静态。同时互斥变量使用pthread_mutex_t数据类型来表示。静态方式: POSIX定义了一个宏PTH原创 2013-11-05 10:25:53 · 595 阅读 · 0 评论 -
linux线程——pthread_exit()与pthread_join()
在前文讨论了线程创建的一些基本东西,这里讨论有哪些方法可以使线程终止,线程终止又是如何与创建所需的参数进行关联的。一,正常终止 线程在执行完成之后,正常终止。二,线程取消2.1 线程取消的定义 一般情况下,线程在其主体函数退出的时候会自动终止,但同时也可以因为接收到另一个线程发来的终止(取消)请求而强制终止。2.2 线程取消的语义 线程取消的方法是向目原创 2013-11-04 09:28:29 · 543 阅读 · 0 评论 -
linux线程——pthread_cleanup_push(),pthread_cleanup_pop()
线程可以安排它退出时需要调用的函数,这样的函数称为线程清理处理程序,线程可以建立多个清理处理程序。处理程序记录在栈中,也就是说它们的执行顺序与它们注册时的顺序相反。一、pthread_cleanup_push函数简介: 头文件:#include 函数定义:voidpthread_cleanup_push(void (*rtn)(void*),v原创 2013-11-04 20:53:27 · 630 阅读 · 0 评论 -
linux线程——2——线程属性
线程属性由数据结构pthread_attr_t结构表示,其定义如下所示:typedef struct { int detachstate; 线程的分离状态 int转载 2013-11-03 21:50:25 · 449 阅读 · 0 评论 -
【linux多线程】理解epoll的功能
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要转载 2014-02-25 14:37:30 · 453 阅读 · 0 评论