Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 启动并连接到数据库 » 运行数据库服务器 » 一些常见的选项 » SQL Anywhere 中的线程

 

Windows 和 Linux 上的任务

在 Windows 和 Linux 上,任务在称为纤程的轻量线程中执行。纤程使线程上运行的任务能够以协作方式自行调度,而不依赖操作系统的线程调度程序。结果是,纤程间的上下文切换开销远低于线程上下文切换开销,因为不需要与操作系统内核或调度程序进行交互。不使用纤程时,多线程应用程序会频繁进行线程上下文切换,而使用纤程后,则可以显著提高性能和可伸缩性。

由于纤程不依赖操作系统调度程序,因此在其等待某个其它活动完成时,必须显式地将控制权让与另一个纤程。例如,如果等待 I/O 操作完成时需要阻塞某个正在纤程中执行的任务,则当前纤程会将控制权让与另一个纤程。托管原始纤程的线程可以立即拾取另一个纤程并开始执行,而不需要进行内核上下文切换。如果某个纤程产生阻塞但不让出控制,则它会阻塞托管它的线程,并禁止其它纤程在该线程上运行。如果有多个线程在托管纤程,则只有托管等待中纤程的线程会被阻塞:其它线程仍可自由地运行纤程。

在支持纤程的平台上,所创建的纤程数量至少要与服务器最大并发数设置所要求的数量(即 -gn 选项所指定的数量)相同。服务器创建的纤程数量可以多于此值,这样一来,始终都会有纤程可以为服务器内部任务提供服务。请参见-gn 服务器选项