一、可重入函数可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;,局部变量可重入函数;不可重入的函数由于使用了一些系统资源..
分类:
编程语言 时间:
2016-05-10 15:30:49
阅读次数:
218
可重入函数与线程安全线程安全:假如在一个函数中它是这么写的,在一个全局链表上存放数据,在单线程模式下,我们先new一个新的节点然后让head->next指向这个节点,这种场景在多线程场景下会是这样的过程,线程一new了一个节点,然后cpu转去执行线程二,线程二new一个节点后..
分类:
编程语言 时间:
2016-05-09 22:17:56
阅读次数:
284
在之前的博文中有说过线程,线程是一个执行流,一个指令序列,一个指令分支,为了共享资源而产生的线程,但只要是资源,都会出现资源的数目与操作安全问题,所以在线程这一块,设计了信号量,条件变量,各种锁,来保证资源的访问独占性与原子性。什么是线程安全?线程安全指的..
分类:
编程语言 时间:
2016-05-09 07:23:17
阅读次数:
223
在Linux:信号上博文中我们写了一个mysleep,但是实际上这个函数在多线程环境下是会出现错误的,也就是我们这个mysleep函数并不是可重入函数,现在重新审视“mysleep”程序,设想这样的时序:1.注册SIGALRM信号的处理函数。2.调用alarm(nsecs)设定闹钟。3.内核调度优先级更高的进..
分类:
系统相关 时间:
2016-05-09 07:21:41
阅读次数:
315
现在又出现了另外一个的问题,在中断处理过程中是否应该允许下一个中断发生? 让我们修改一下代码,以便让系统可以在时钟中断的处理过程中接受下一个时钟中断。这听起来不是个很好的主意,但是可以借此来做个试验。 首先,因为CPU在响应中断的过程中会自动关闭中断,我们需要人为地打开中断,加入sti指令;然后,为 ...
分类:
系统相关 时间:
2016-05-08 18:12:30
阅读次数:
423
一.线程安全前面提到过线程的同步与互斥,也就是当两个线程同时访问到同一个临界资源的时候,如果对临界资源的操作不是原子的就会产生冲突,使得结果并不如最终预期的那样,比如如下的程序:#include<stdio.h>
#include<pthread.h>
intg_val=0;
void*fun(void*ar..
分类:
编程语言 时间:
2016-05-08 01:25:42
阅读次数:
323
线程安全函数确保线程安全:要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区和堆,而私有的线程空间则主要包括栈和寄存器。因此,对于同一进程的不同线程来说,每个线程的局部变量都是私有的,而全局变量、局部..
分类:
编程语言 时间:
2016-05-07 16:50:22
阅读次数:
186
一、线程安全线程是操作系统调度的最小单元,进程是分配资源的最小单元。一个进程可以派生出多个线程,这些线程独立执行,共享进程资源。多线程大大提高了系统的运行速度,但是也引出了一些问题,线程主要由控制流程和资源使用两部分构成,所以就面临一个问题就是对共享资源访..
分类:
编程语言 时间:
2016-05-07 01:20:25
阅读次数:
196
线程安全函数概念:线程安全的概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。线程安全指的是多线程并发执行时,能够得到正确的结果,这里强调的是并发性,确保线程安全的措施是:线程安全函数不使用共享数据..
分类:
编程语言 时间:
2016-05-07 01:15:35
阅读次数:
189
一、线程安全线程安全:如果一个函数在同一时刻可以被多个线程安全的调用,就称该函数是线程安全的。不需要共享时,请为每个线程提供一个专用的数据副本。如果共享非常重要,则提供显式同步,以确保程序以确定的方式操作。通过将过程包含在语句中来锁定和解除锁定互斥,可以使..
分类:
编程语言 时间:
2016-05-07 01:13:23
阅读次数:
249