提交 47a7ef55 authored 作者: Anthony Minessale's avatar Anthony Minessale

FS-6211 thread priority in the apr for windows

上级 729976df
......@@ -87,6 +87,7 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new,
apr_status_t stat;
unsigned temp;
HANDLE handle;
int priority = THREAD_PRIORITY_NORMAL;
(*new) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t));
......@@ -103,6 +104,18 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new,
return stat;
}
if (attr && attr->priority && attr->priority > 0) {
if (attr->priority >= 99) {
priority = THREAD_PRIORITY_TIME_CRITICAL;
} else if (attr->priority >= 50) {
priority = THREAD_PRIORITY_ABOVE_NORMAL;
} else if (attr->priority >= 10) {
priority = THREAD_PRIORITY_NORMAL;
} else if (attr->priority >= 1) {
priority = THREAD_PRIORITY_LOWEST;
}
}
/* Use 0 for Thread Stack Size, because that will default the stack to the
* same size as the calling thread.
*/
......@@ -121,6 +134,11 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new,
return apr_get_os_error();
}
#endif
if (priority) {
SetThreadPriority(handle, priority);
}
if (attr && attr->detach) {
CloseHandle(handle);
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论