Win32 多线程编程
Posted
技术标签:
【中文标题】Win32 多线程编程【英文标题】:Win32 Multithreaded Programming 【发布时间】:2020-11-17 02:25:53 【问题描述】:一个完全菜鸟的问题。 窗户里面。是否可以在不直接或间接调用 Win32 API 函数的情况下创建线程?例如,使用汇编语言调用操作码,使 CPU 执行原子操作。我不确定,但我猜操作系统的目的是提供这种东西。虽然我不确定。
操作系统基础是否提供了诸如 CreateThread() 和 fork() 之类的线程处理,以便构建在上面的所有东西,还是为了方便而提供?
在制作进程和线程时,您可以自己滚动还是必须使用操作系统提供的内容?
【问题讨论】:
如果CPU支持原子操作,那么你可以在汇编层面上做(但我真的不推荐)。但是你不能在不通过操作系统的情况下启动一个新线程。除非您正在编写操作系统。 能否请edit您的问题详细说明您的实际问题?为什么要在不经过操作系统的情况下处理线程和进程?这应该解决什么问题? 我不想编辑问题。之所以问这个问题,是因为我想了解更多关于 CPU、操作系统和语言语义的信息。我什至不知道我不知道什么。所以我不得不问这些问题。即使它们在美学上可能令人不快。 【参考方案1】:Atomics 是 CPU 提供的一项功能。一般来说,如果有你可以执行的 CPU 操作,你就可以执行它,除了那些为较低的“环”级别保留的指令。
线程是操作系统提供的一项功能。
因此您无法使用汇编代码创建线程1,您的用户空间代码没有必要的权限。您必须进行正确的操作系统内核调用才能请求新线程。
线程实际上并不存在,除非是操作系统内核的功能。内核的主要功能之一是管理线程并将它们调度到可用的计算资源上。
1 这会忽略您的代码可以但处于与父操作系统不同级别的虚拟化或虚拟机管理程序功能。
【讨论】:
以上是关于Win32 多线程编程的主要内容,如果未能解决你的问题,请参考以下文章