Котроль расположения "Shared Memory" (только ОЗУ)
Заранее спасибо.
Обращение не всегда влияет на прибывание блоков в ОЗУ, выполнение процессов в системе очередно, и собственно если будет какойто другой процесс интенсивно использующий память то сброса в своп не избежать, единственная вероятность точно не быть сброшенным туда это наличие достаточного количества свободной памяти и высокий ПРИОРИТЕТ процесса, т.к. именно приоритет играет большую роль в распределение ресурсов.
Ну конечно можешь попробовать по таймеру писать что то в каждый блок, ну или ограничить размер своп файла 0 :) Но мне кажется это не очень хорошие идеи...
THREAD_PRIORITY_NORMAL
THREAD_PRIORITY_ABOVE_NORMAL
THREAD_PRIORITY_HIGHEST
THREAD_PRIORITY_TIME_CRITICAL
Приоритет варьируется от -15 до 15, 0 - стандартный.
*/
if(!SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL))
{
//-- Ошибко :)
}
Можно также установить приоритет для всех потоков процесса.
IDLE_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
ABOVE_NORMAL_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
*/
if(!SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS))
{
//-- Ошибко :)
}
Я так понял - выполнять эти функции надо единожды при запуске приложения.
Я так понял - выполнять эти функции надо единожды при запуске приложения.
Ну если тебе один раз надо приоритет установить и не менять его то да, единожды.
С dll решается также, путем вызова SetThreadPriority из нее. Например в DllEntryPoint. Поправьте если не прав.
что за глупость? как можно поставить приоритет на DLL? приоритет можно поставить на поток или процесс
Ну и соответственно можно из этой же процедуры установить приоритет для вызывающего потока :)
вот! это и нужно как раз, как это сделать?:)