Pracujem na prioritách nití v rámci mojej žiadosti. Je naplánované jedno vlákno v reálnom čase SCHED_RR
, používam pthread_setschedparam
stanoviť túto politiku a jej prioritu. pthread_setschedparam
berie vlákno id ako prvý argument, takže po vytvorení vlákno s boost::thread
Môžem nastaviť prioritu v reálnom čase.
Iné vlákno by však malo mať určitú peknú úroveň, ale bez plánovania v reálnom čase. Môžem použiť
pid_t tid;
tid = syscall(SYS_gettid);
int ret = setpriority(PRIO_PROCESS, tid, nicelevel);
nastaviť jeho peknú úroveň ǹicelevel
, ale toto funguje len vtedy, ak upravím funkciu vlákna tak, aby obsahovala riadky vyššie. Existuje spôsob, ako nastaviť peknú úroveň z metódy, ktorá vytvára vlákno?
Vďaka!
odpovede:
0 pre odpoveď č. 1Na zvýšiť :: niť trieda vystavuje verejnosť native_handle()
metóda. V implementácii založenej na pthreads táto metóda sila vrátiť a tid
(to tiež sila vrátiť a pthread_t *
, v závislosti od významu handle
v tomto konkrétnom prípade).
Ak to naozaj vráti tid
, používanie by malo vyriešiť váš problém. V opačnom prípade budete pravdepodobne musieť prenášať hodnotu vrátenú gettid()
z funkcie vlákna do globálneho rozsahu, ako túto odpoveď naznačuje.