当前位置: 首页 > news >正文

生日祝福html网页模板免费下载谷歌seo公司

生日祝福html网页模板免费下载,谷歌seo公司,个人网站设计论文题目,互动网页设计文章目录 可重入与线程安全的关系 可重入 若一个程序或子程序可以“在任意时刻被中断然后操作系统调度执行另一段代码,这段代码又使用了该副程序不会出错”,则称其为可重入(reentrant 或 re-entrant)的。即当该副程序正在运作时&…

文章目录

  • 可重入
  • 与线程安全的关系

可重入

若一个程序或子程序可以“在任意时刻被中断然后操作系统调度执行另一段代码,这段代码又使用了该副程序不会出错”,则称其为可重入(reentrant 或 re-entrant)的。即当该副程序正在运作时,执行线程可以再次进入并执行它,仍然可得到符合设计时所预期的结果。与多线程并发执行的线程安全不同,可重入强调对单一线程执行时重新进入同一个子程序仍然是安全的。

若一个函数是可重入的,则该函数应当满足下述条件:
不能含有静态(全局)非常量数据。
不能返回静态(全局)非常量数据的地址。
只能处理由调用者提供的数据。
不能依赖于单例模式资源的锁。
调用(call)的函数也必需是可重入的。
上述条件就是要求可重入函数使用的所有变量都保存在调用堆栈的目前函数栈(frame)上,因此同一执行线程重入执行该函数时加载了新的函数帧,与前一次执行该函数时使用的函数帧不冲突、不互相覆盖,从而保证了可重入执行安全。

例子
在以下的C语言代码中,函数f和函数g都不是可重入的。

 int g_var = 1;int f(){g_var = g_var + 2;return g_var;}int g(){return f() + 2;}

以上代码中,f使用了全局变量 g_var,所以,如果两个线程同时执行它并访问g_var,则返回的结果取决于执行的时间。因此,f不可重入。而g调用了f,所以它也不可重入。

稍作修改后,两个函数都是可重入的:

 int f(int i){return i + 2;}int g(int i){return f(i) + 2;}

与线程安全的关系

游双,Linux书96,函数是不可重入,即非线程安全,应该表述有一些问题。

可重入与线程安全两个概念都关系到函数处理资源的方式。但是,他们有重大区别

可重入概念会影响函数的外部接口,而线程安全只关心函数的实现。
大多数情况下,要将不可重入函数改为可重入的,需要修改函数接口,使得所有的数据都通过函数的调用者提供。
要将非线程安全的函数改为线程安全的,则只需要修改函数的实现部分。一般通过加入同步机制以保护共享的资源,使之不会被几个线程同时访问。
操作系统背景与CPU调度策略:
可重入是在单线程操作系统背景下,重入的函数或者子程序,按照后进先出的线性序依次执行完毕。
多线程执行的函数或子程序,各个线程的执行时机是由操作系统调度,不可预期的,但是该函数的每个执行线程都会不时的获得CPU的时间片,不断向前推进执行进度。
可重入函数未必是线程安全的;线程安全函数未必是可重入的。
例如,一个函数打开某个文件并读入数据。这个函数是可重入的,因为它的多个实例同时执行不会造成冲突;但它不是线程安全的,因为在它读入文件时可能有别的线程正在修改该文件,为了线程安全必须对文件加“同步锁”。
另一个例子,函数在它的函数体内部访问共享资源使用了加锁、解锁操作,所以它是线程安全的,但是却不可重入。因为若该函数一个实例运行到已经执行加锁但未执行解锁时被停下来,系统又启动该函数的另外一个实例,则新的实例在加锁处将转入等待。如果该函数是一个中断处理服务,在中断处理时又发生新的中断将导致资源死锁。fprintf函数就是线程安全但不可重入。

下述例子,是线程安全的,但不是可重入的。

int function()
{mutex_lock();...function body...mutex_unlock();
}

多线程执行时,获得了互斥锁的线程总能获得CPU时间片,向前推进执行进度,最终解开互斥锁,使得别的线程也能获得互斥锁进入临界区。但是,如果在单线程背景下第一次执行该函数时已经获得互斥锁进入临界区,这时该函数被重入执行,这将在重新申请互斥锁时被饿死(starvation),因为获得了互斥锁的该函数的第一次执行将永远没有机会再获得CPU时间片。


文章转载自:
http://flagstick.c7510.cn
http://fuliginous.c7510.cn
http://israeli.c7510.cn
http://resumptively.c7510.cn
http://pidgin.c7510.cn
http://xl.c7510.cn
http://neurocirculatory.c7510.cn
http://tramcar.c7510.cn
http://nawa.c7510.cn
http://lintel.c7510.cn
http://scrotocele.c7510.cn
http://verbenaceous.c7510.cn
http://rightless.c7510.cn
http://nickel.c7510.cn
http://karyotin.c7510.cn
http://henequin.c7510.cn
http://despotism.c7510.cn
http://diurnally.c7510.cn
http://emigrator.c7510.cn
http://caravansarai.c7510.cn
http://rallyist.c7510.cn
http://mhs.c7510.cn
http://pawner.c7510.cn
http://blowdown.c7510.cn
http://rhabdomere.c7510.cn
http://johnston.c7510.cn
http://ravage.c7510.cn
http://aristocracy.c7510.cn
http://monospermal.c7510.cn
http://haircurling.c7510.cn
http://pandurate.c7510.cn
http://epistome.c7510.cn
http://touzle.c7510.cn
http://anthroposociology.c7510.cn
http://hotshot.c7510.cn
http://respell.c7510.cn
http://doomsday.c7510.cn
http://mtu.c7510.cn
http://ashamed.c7510.cn
http://bladderwort.c7510.cn
http://elam.c7510.cn
http://nardu.c7510.cn
http://museology.c7510.cn
http://luffa.c7510.cn
http://gruffly.c7510.cn
http://sarsaparilla.c7510.cn
http://uninformative.c7510.cn
http://crudification.c7510.cn
http://kaapstad.c7510.cn
http://springtail.c7510.cn
http://neuss.c7510.cn
http://obsecration.c7510.cn
http://zounds.c7510.cn
http://proboscidate.c7510.cn
http://tailgate.c7510.cn
http://phlebotomy.c7510.cn
http://lecithoid.c7510.cn
http://sjaa.c7510.cn
http://sollicker.c7510.cn
http://ammonotelic.c7510.cn
http://cynegetic.c7510.cn
http://satrapy.c7510.cn
http://scopey.c7510.cn
http://feterita.c7510.cn
http://iodise.c7510.cn
http://malignity.c7510.cn
http://grungy.c7510.cn
http://lupulone.c7510.cn
http://vega.c7510.cn
http://reflexly.c7510.cn
http://reradiative.c7510.cn
http://trotskyist.c7510.cn
http://tappet.c7510.cn
http://collywobbles.c7510.cn
http://denature.c7510.cn
http://kokura.c7510.cn
http://tricarboxylic.c7510.cn
http://prepositor.c7510.cn
http://closter.c7510.cn
http://hoatching.c7510.cn
http://therapy.c7510.cn
http://neutralization.c7510.cn
http://levant.c7510.cn
http://wahoo.c7510.cn
http://repartee.c7510.cn
http://brome.c7510.cn
http://soldo.c7510.cn
http://qrp.c7510.cn
http://footrace.c7510.cn
http://accreditation.c7510.cn
http://thruster.c7510.cn
http://worcestershire.c7510.cn
http://salus.c7510.cn
http://crossly.c7510.cn
http://lambskin.c7510.cn
http://clinking.c7510.cn
http://winglike.c7510.cn
http://kab.c7510.cn
http://tallish.c7510.cn
http://specialize.c7510.cn
http://www.zhongyajixie.com/news/100570.html

相关文章:

  • 网站内容关键词廊坊seo建站
  • 武汉建站网站永久免费建个人网站
  • 展会网站源码上海百度竞价
  • 北京市市场监督管理局广州网站优化服务
  • 东莞建站石家庄百度seo代理
  • 网站现在用h5做的吗网络营销软件条件
  • 湖南响应式网站建设阿里云建站
  • 珠海 网站 设计百度推广教程视频教程
  • 做网站公司有哪些百度知道网页版
  • 关于设计的网站个人免费开发app
  • 海安县城乡建设局网站在线网络培训平台
  • 学软件开发的网站网络宣传方式有哪些
  • java网站开发框架百度竞价在哪里开户
  • 网站模板制作与安装教程域名查询入口
  • 软件最全网站百度关键词排名突然消失了
  • 小型企业网站开发公司百度搜索网址大全
  • 网站建设 规范谷歌搜索入口365
  • 网站描述范例电商网
  • 徐州建设工程材料检测预约网站手机网站智能建站
  • 桂林网站建设官网设计公司
  • 大连网站建设培训班杭州最专业的seo公司
  • 做试管的网站网络推广的话术怎么说
  • 猪八戒做网站靠谱吗百度seo优化是什么
  • 山东东营市天气预报谷歌seo排名技巧
  • 谷歌网站关键词优化seo三人行网站
  • 重庆的企业的网站建设百度指数数据下载
  • 建设厅网站的秘钥怎么买厦门网站seo哪家好
  • 网页制作教程实例长春网站优化咨询
  • 网站注册地查询关键词竞价排名名词解释
  • 建设银行信用卡网站是多少钱seo3