微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

reactos操作系统实现(41)

当线程初始化成功后,是怎么样放到推迟就绪队列的呢?通过下面这几个函数的分析,就会了解这个问题了。从以前的分析可以知道是调用函数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来进一步设置线程就绪状态。

原文地址:https://www.jb51.cc/react/308492.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐