在 Unix 上,任务直接在操作系统线程中执行。在这些平台上,-gn 选项的值设置数据库服务器启动时所创建的操作系统线程数量;此组线程将为所有任务提供服务。线程变为可用状态时,就会拾取下一个需要处理的可用任务。处理任务时,线程将一直用于该任务,直到任务处理完毕。如果由于某种原因需要阻塞任务(可能是由于该任务正在等待 I/O 操作或等待锁),则线程会主动放弃对 CPU 的控制,将控制权交还操作系统调度程序,以使其它线程能够在该 CPU 上运行。
除主动放弃对 CPU 的控制外,线程还可能会被操作系统调度程序搁置。进程内的每个应用程序线程都分配有一系列运行时间片,其长度由其优先级和其它系统因素决定。线程运行到其当前时间片结束时,操作系统会搁置线程并安排其过一段时间再次运行。操作系统调度程序接着选择另一个线程来执行一个时间片。这种抢先调度不会对任务处理产生任何可见的影响;线程被安排再次运行时,将从停止处理的位置继续对任务进行处理。
对活动任务的处理完成后,线程即会进行检查以确认是否有任何其它任务可供处理。如果有,线程会拾取下一个可用任务,然后继续。否则,它会放弃对 CPU 的控制,等待新任务到达数据库服务器。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |