/ / Nastaviť „peknú úroveň“ vlákna od vlákna tvorcu? - c ++, linux, pthreads, plánovanie

Nastaviť "príjemnú úroveň" vlákna z vlákna tvorcu? - c ++, linux, pthreads, plánovanie

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ď č. 1

Na 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.