Possibilità di richiedere più thread Linux pianificati insieme (nello stesso tempo)

1

Mi piacerebbe poter richiedere a Linux di pianificare due o più thread contemporaneamente. Intendo oggi quando il mio programma multi-thread è in esecuzione, so che nel peggiore dei casi solo uno dei miei thread viene eseguito fisicamente (programmato) alla volta. Ora vorrei dire a Linux: ecco la lista degli Id dei thread, cerca di programmarli nello stesso tempo, possibilmente con affinità core. Esiste una tale capacità o qualcuno ha lavorato su questo?

L'obiettivo è di avere uno o più thread di attività (dedicati alle attività) in esecuzione nello stesso tempo del thread principale. Il thread principale avrebbe dato loro compiti molto brevi da eseguire, come la memorizzazione o la ricerca di un hash o di un array. Nel frattempo il thread principale sarebbe andato avanti fino a quando non avrebbe raggiunto una dipendenza da uno dei risultati delle attività. Se l'attività è stata realmente eseguita in parallelo, la dipendenza non fermerebbe il thread principale e il programma sarebbe eseguito più velocemente.

Con il consueto schema di pianificazione le attività potrebbero essere pianificate molto più tardi rispetto al punto di sincronizzazione e questo potrebbe persino essere eseguito più lentamente di una versione a thread singolo.

Grazie

    
posta Alpa 20.07.2016 - 01:43
fonte

1 risposta

2

In realtà, nel caso peggiore , nessuno dei tuoi thread potrebbe essere in esecuzione. Linux ha molti thread che deve anche pianificare. Puoi sempre richiedere per eseguire più thread, ma solo assegnandogli una priorità elevata puoi sperare di averli in esecuzione simultaneamente. Nessuna garanzia.

Assegnare un'affinità di base a un thread è una cattiva idea. Questo potrebbe bloccare il tuo thread se un altro thread è già in esecuzione su quel core, e non rinuncerà. In genere è più veloce utilizzare il prossimo core disponibile.

Potresti voler vedere le chiamate di sistema "in tempo reale" in Linux, ma Linux non supporta "hard" in tempo reale. Tieni presente che essere troppo generoso con le tue discussioni potrebbe bloccare l'esecuzione di alcuni thread Linux necessari.

    
risposta data 20.07.2016 - 03:38
fonte

Leggi altre domande sui tag