a través de la discusión de otro problema, vea Debugging strange error that depends on the selected scheduler, me encontré con algunas preguntas sobre la programación de mis hilos. Estoy en Linux 2.6.x, ejecutando con derechos de root y usando pthreads para hacer cosas paralelas en una aplicación de tiempo crítico escrita en C/C++.Entender la programación de Linux cuando pthreads están involucrados
Voy a tratar de dar algunos cortos, se reducía, fragmentos de explicar mi pregunta:
En algún lugar principal que al principio sí:
struct sched_param sp;
memset(&sp, 0, sizeof(sched_param));
sp.sched_priority = 99;
sched_setscheduler(getpid(), SCHED_RR, &sp);
entiendo que este es el código que cambia mi programa para usar el RR-Scheduler, ejecutándose a máx. prioridad.
Al iniciar un pthread, lo hago:
sched_param param;
pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
pthread_attr_getschedparam(&attr, ¶m);
param.sched_priority = priority;
pthread_attr_setschedpolicy(&attr, SCHED_RR);
pthread_attr_setschedparam(&attr, ¶m);
entiendo esto, ser el código que cambia el hilo que va a ser comenzó a RR-Scheduler, utilizando la prioridad dada en la 'prioridad'. ¿Va a funcionar de manera equivalente si main no cambia el programador?
Lo que no entiendo es, si es necesario llamar a ese código en main? (La función principal no hace más que comenzar todo y luego bloquear en la entrada del teclado.) Dónde puedo encontrar documentación precisa de cómo funciona esto. No creo que las páginas de manual hagan un buen trabajo explicando los antecedentes.
Gracias de antemano.
Otra pregunta es, ¿qué sucede si los procesos multiproceso separados se ejecutan en paralelo? ¿Cómo se distribuirá el tiempo del procesador entre esos? – user761451