gpt4 book ai didi

c - 线程实现

转载 作者:行者123 更新时间:2023-12-02 00:23:38 25 4
gpt4 key购买 nike

我想知道如何实现我自己的线程库。
我拥有的是一个 CPU(PowerPC 架构)和 C 标准库。

是否有我可以查看的开源轻量级实现?

最佳答案

最简单的线程需要:

  1. 堆栈空间的一些内存
  2. 在某处存储其上下文(即寄存器内容、程序计数器、堆栈指针等)

除此之外,您还需要实现一个负责线程切换的简单“内核”。如果您正在尝试实现抢占式线程,那么您还需要一个周期性的中断源。例如。一个计时器。在这种情况下,您可以在定时器中断中执行线程切换代码。

查看 setjmp()/longjmp() 例程和相应的 jmp_buf 结构。这将使您可以轻松访问堆栈指针,以便您可以分配自己的堆栈空间,并为您提供一种捕获所有寄存器内容以提供线程上下文的简单方法。

通常,longjmp() 函数是从中断指令返回的包装器,它非常适合在定时器中断中具有线程调度功能。不过,您需要检查平台的 longjmp() 和 jmp_buf 的实现。

尝试在通常没有操作系统的较小微处理器上寻找线程实现。例如。 Atmel AVR,或 Microchip PIC。例如:discussion on AVRFreaks

关于c - 线程实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com