Реализуют ли виртуальные машины Linux приоритеты потоков?

неа.

Если вы хотите контролировать проверку орфографии, вы можете сделать это самостоятельно с помощью AJAX.

(И, кстати, ieSpell - это бесплатный плагин проверки орфографии для IE, который довольно прост для пользователей для установки самостоятельно)

24
задан Mogsdad 26 April 2016 в 18:48
поделиться

3 ответа

Что ж, давайте посмотрим на источник :

строка 2947:

////////////////////////////////////////////////////////////////////////////////
// thread priority support

// Note: Normal Linux applications are run with SCHED_OTHER policy. SCHED_OTHER
// only supports dynamic priority, static priority must be zero. For real-time
// applications, Linux supports SCHED_RR which allows static priority (1-99).
// However, for large multi-threaded applications, SCHED_RR is not only slower
// than SCHED_OTHER, but also very unstable (my volano tests hang hard 4 out
// of 5 runs - Sep 2005).
//
// The following code actually changes the niceness of kernel-thread/LWP. It
// has an assumption that setpriority() only modifies one kernel-thread/LWP,
// not the entire user process, and user level threads are 1:1 mapped to kernel
// threads. It has always been the case, but could change in the future. For
// this reason, the code should not be used as default (ThreadPriorityPolicy=0).
// It is only used when ThreadPriorityPolicy=1 and requires root privilege.

...

строка 2982:

 static int prio_init() {
   if (ThreadPriorityPolicy == 1) {
     // Only root can raise thread priority. Don't allow ThreadPriorityPolicy=1
     // if effective uid is not root. Perhaps, a more elegant way of doing
     // this is to test CAP_SYS_NICE capability, but that will require libcap.so
     if (geteuid() != 0) {
       if (!FLAG_IS_DEFAULT(ThreadPriorityPolicy)) {
         warning("-XX:ThreadPriorityPolicy requires root privilege on Linux");
       }
       ThreadPriorityPolicy = 0;
     }
   }
   return 0;
 }

...

строка 2997:

OSReturn os::set_native_priority(Thread* thread, int newpri) {
  if ( !UseThreadPriorities || ThreadPriorityPolicy == 0 ) return OS_OK;

  int ret = setpriority(PRIO_PROCESS, thread->osthread()->thread_id(), newpri);
  return (ret == 0) ? OS_OK : OS_ERR;
}

Итак! По крайней мере, в Sun Java, в Linux вы не увидите приоритеты потоков, если не выполнили -XX: ThreadPriorityPolicy , и для этого, похоже, требуется root.

20
ответ дан 29 November 2019 в 00:20
поделиться

Просто выстрел в темноте, но разве для приоритезации потоков в JVM не требуется возможность настраивать приоритет потоков операционной системы?

Linux (и любая Unix-подобная ОС) ограничивает способность придавать процессам более высокий приоритет root. Я думаю, что будет подобное ограничение для потоков.

0
ответ дан Kenny Drobnack 26 April 2016 в 18:48
поделиться

Политика планировщика потоков Linux по умолчанию SCHED_OTHER не поддерживает приоритеты. Или, если быть более точным, он поддерживает установку приоритета с одним значением: 0. Другие так называемые политики «реального времени» SCHED_FIFO и SCHED_RR поддерживают более высокие приоритеты, но доступны только для процессов с привилегиями суперпользователя.

1
ответ дан 29 November 2019 в 00:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: