reactos操作系统实现(41)

前端之家收集整理的这篇文章主要介绍了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来进一步设置线程就绪状态。

猜你在找的React相关文章