【问题标题】:How are threads and processes implemented in Windows CE?Windows CE 中的线程和进程是如何实现的?
【发布时间】:2019-10-30 15:42:26
【问题描述】:
我读到线程是 Windows CE 上的主要执行单元。这到底是什么意思?线程是如何实现的,进程是如何实现的?
【问题讨论】:
-
您是否尝试阅读源代码?至少有一部分是可用的。另外,请阅读How to Ask,尤其要考虑您的问题的答案应该提供什么才能被接受。此外,如果您想澄清某人的意思,请询问他们。至少,如果你引用某人的话,请给出相应的参考!
标签:
multithreading
multiprocessing
windows-ce
【解决方案1】:
在 ce 中,一个进程定义了一个隔离的地址空间,并且只要它的主线程正在运行,它就会一直存在。通常,主线程是经典 C 程序中的 main() 入口点,一旦您从该函数返回,进程就会终止(好的,有一些初始化和销毁步骤......但让我们保持简单)。当主线程终止时,该进程的所有线程分配的所有内存和资源都被释放。
线程是执行单元。您至少需要拥有主线程,但您可以创建其他主线程。这些在主线程终止时终止。
主线程和所有其他线程之间的唯一区别是 main 决定了进程的“生命周期”。
调度器关心线程。当线程时间片终止或高优先级线程需要运行时,它会调度新线程,如果它属于与正在运行的进程不同的进程,它会重新配置虚拟内存地址空间以匹配。
如果一个进程有一个线程,另一个有 99 个线程,并且它们都具有相同的优先级,并且它们都使 CPU 忙于整个量子进程,那么一个进程将使用 1% 的 CPU,而进程 2 将使用 99%。
当然,作为硬实时操作系统,CE 也有优先级管理,但这同样适用于线程而不是进程。