加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

reactos操作系统实现(41)

发布时间:2020-12-15 05:01:42 所属栏目:百科 来源:网络整理
导读:当线程初始化成功后,是怎么样放到 推迟 就绪队列的呢?通过下面这几个函数的分析,就会了解这个问题了。从以前的分析可以知道是调用函数 KeReadyThread 来执行的,这个函数的代码如下: #001 VOID #002 NTAPI #003 KeReadyThread(IN PKTHREAD Thread) #004

当线程初始化成功后,是怎么样放到推迟就绪队列的呢?通过下面这几个函数的分析,就会了解这个问题了。从以前的分析可以知道是调用函数KeReadyThread来执行的,这个函数的代码如下:

#001 VOID

#002 NTAPI

#003 KeReadyThread(IN PKTHREAD Thread)

#004 {

这里参数Thread就是刚刚创建的线程。

#005 KIRQL OldIrql;

#006 ASSERT_THREAD(Thread);

#007 ASSERT_IRQL_LESS_OR_EQUAL(DISPATCH_LEVEL);

#008

锁住分发器的自旋锁,以便原子操作。

#009 /* Lock the Dispatcher Database */

#010 OldIrql = KiAcquireDispatcherLock();

#011

设置线程为就绪状态。

#012 /* Make the thread ready */

#013 KiReadyThread(Thread);

#014

释放分发器的自旋锁。

#015 /* Unlock dispatcher database */

#016 KiReleaseDispatcherLock(OldIrql);

#017 }

在这个函数里主要就是同步了分发器的自旋锁,然后用调函数KiReadyThread来进一步设置线程就绪状态。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读