一、线程安全在目前线程是操作系统调度的最小单元,进程是资源分配的最小单元。在大多数操作系统中,一个进程可以同时派生出多个线程。这些线程独立执行,共享进程的资源。线程主要由控制流程和资源使用两部分构成,因此一个不得不面对的问题就是对共享资源的访问。为了确保资..
分类:
编程语言 时间:
2016-05-05 22:50:04
阅读次数:
905
轻量级进程(LWP)是计算机操作系统中一种实现多任务的方法。在计算机操作系统中,轻量级进程(LWP)是一种实现多任务的方法。与普通进程相比,LWP与其他进程共享所有(或大部分)它的逻辑地址空间和系统资源;与线程相比,LWP有它自己的进程标识符,优先级,状态,以及栈和局部..
分类:
编程语言 时间:
2016-05-05 17:51:35
阅读次数:
142
一.对于C语言的函数来说在C语言的时代,可重入函数是说当一个函数被不同的线程访问的时候,每一份调用都独自使用自己的一份数据,多次调用之间不存在数据共享。所以C语言的可重入函数一定是线程安全的,因为根本不存在多个线程共享一份数据的问题,也就不会发生访问冲突。可重..
分类:
编程语言 时间:
2016-05-05 17:48:59
阅读次数:
141
搞错了,下面说的是线程安全概念 可重入函数这个概念是针对多进程,多线程编程中产生的。指的是一个函数被并发调用时,任意一个调用不会影响到它的另一个调用。 那么什么样的函数又不是可重入的呢?举几个反例,说明可重入函数要规避的东西。下面的1,2两点都是在多线程中出现的问题,进程在fork后静态变量和全.....
分类:
其他好文 时间:
2015-12-24 14:41:14
阅读次数:
133
参考:1. 摘自多线程和多进程的区别(小结)http://blog.csdn.net/hairetz/article/details/4281931要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区和堆,而私有的线程空间则主要包括栈和寄存器。因...
分类:
系统相关 时间:
2015-11-11 19:15:45
阅读次数:
243
线程安全:一个函数被称为线程安全的(thread-safe),当且仅当被多个并发进程反复调用时,它会一直产生正确的结果。如果一个函数不是线程安全的,我们就说它是线程不安全的(thread-unsafe)。我们定义四类(有相交的)线程不安全函数。 第1类:不保护共享变量的函数 将这类线程不安全函数变为...
分类:
编程语言 时间:
2015-09-28 16:16:35
阅读次数:
273
come on !复习一下什么是信号的不可靠?think for a while ???信号的执行现场是内核帮我们布置的,so 如果一个信号正在执行一个行为,此时不好意思有来了一个这个信号,那么,第一次的行为将会被第二次的行为覆盖。解决信号的不可靠----> 可重入函数:第一次调用未结束,第二次调用...
分类:
其他好文 时间:
2015-07-20 01:08:33
阅读次数:
184
可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。可重入函数可以被中断,意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括...
分类:
其他好文 时间:
2015-07-01 17:29:23
阅读次数:
99
不可重入怎么改改成可重入函数。一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预...
分类:
其他好文 时间:
2015-06-13 09:56:09
阅读次数:
137
一、什么是可重入函数?
答:可重入函数就是多个线程访问同一个函数时,彼此之间互不影响,均能得到期望的结果
二、如何使函数可重入?
答:保证函数所有的输入都来自于函数的形参,所有的输出都为从函数返回值或输出参数得到,
函数内部不得使用全局变量或者静态局部变量
三、不可重入函数举例
int g_flag = 0;
int fun(int x)
{...
分类:
其他好文 时间:
2015-05-14 01:02:51
阅读次数:
141