Dire che ho il seguente programma c:come forzare il programma ac per essere eseguito su un particolare nucleo
#include <stdio.h>
int main()
{
printf("Hello world \n");
getchar();
return 0;
}
gcc 1.c -o helloworld
e, dire che ho un dual core macchina:
cat /proc/cpuinfo | grep processor | wc -l
Ora la mia domanda è , quando eseguiamo il programma, come possiamo forzare l'esecuzione di questo programma in core-0 (o in qualsiasi altro core particolare)?
Come eseguire questa operazione a livello di programmazione? esempi, api, codice di riferimento sarebbero utili.
Se non ci sono API disponibili, ci sono tempi di compilazione, tempo di collegamento, tempo di caricamento di questo?
OTOH, come verificare se un programma è in esecuzione in core-0 o core-1 (o qualsiasi altro core)?
Questo non è nell'ambito di C. È necessario controllare la documentazione del sistema operativo per verificare se il sistema operativo espone tale funzione. –
Sotto Linux è possibile impostare l'affinità utilizzando taskset, inoltre sono d'accordo con Kerrek che questa è più una domanda del sistema operativo –
Mentre è possibile utilizzare taskset per impostare l'affinità principale di un processo avviato in seguito, chiede chiaramente una API e come fare programmaticamente – hirschhornsalz