是否可以在不使用操作系统线程的情况下创建自己的线程?

时间:2017-11-11 09:18:37

标签: database multithreading operating-system rdbms

我正在阅读一篇关于数据库管理如何工作的文章。在那篇文章中,作者提到一些现代数据库使用自己的线程而不是操作系统线程。 这是真的吗?如果是的话怎么可能?

1 个答案:

答案 0 :(得分:0)

我认为没有必要完全替换操作系统线程,但数据库可以使用其他类似线程的线程'设施,如Fibers或异步调用。

例如,Microsoft SQL Server有一个名为SQL Server操作系统(SQLOS)的核心组件。 SQLOS负责数据库的低级操作,如调度或资源管理。

SQLOS推进核心操作系统线程管理,以最大限度地减少昂贵的上下文更改和昂贵的用户内核模式切换。它还使用协作调度而不是抢占式Windows调度程序。

数据库操作由 worker 线程之一执行,这些线程由调度程序之一管理。

无论如何,在非常低级别的SQLOS使用Windows线程就像任何其他应用程序一样,不同的是线程管理和调度。

有关自定义线程调度的更多信息,您可以查看Windows的用户模式调度(UMS)文档。