Potrebbe essere possibile farlo "per caso" con l'uso imprudente dell'affinità di base. Considera il seguente pseudocodice:
- avvia una discussione
- in quel thread, scopri quale core è in esecuzione su
- imposta la sua affinità CPU con quel core
- inizia a fare qualcosa di computazionalmente intenso / loop per sempre
Se si avviano quattro di questi su una CPU a due core, allora qualcosa va storto con l'impostazione di affinità principale o si finisce con due thread che eseguono il hogging dei core disponibili e due thread che non vengono mai pianificati. In nessun momento ha chiesto esplicitamente quanti nuclei ci sono in totale.
(Se hai thread con esecuzione prolungata, l'impostazione dell'affinità della CPU in genere migliora il throughput)
L'idea che le società di gioco stiano "costringendo" le persone ad acquistare hardware più costoso senza una buona ragione non è molto plausibile. Può solo perdere clienti.
Modifica: questo post ha ora 33 upvotes, il che è un bel po 'dato che è basato su congetture educate!
Sembra che le persone abbiano ottenuto DA: I, per funzionare male, su sistemi dual-core: link Questa analisi indica che la situazione migliora notevolmente se viene attivato l'hyperthreading. Dato che HT non aggiunge ulteriori unità di problema o cache, consente semplicemente l'esecuzione di un thread mentre un altro è in uno stallo della cache, il che suggerisce strongmente che è collegato esclusivamente al numero di thread.
Un altro poster afferma che la modifica dei driver grafici funziona: link ; dato che i driver grafici tendono ad essere un misero alveare di feccia e villania, questo non è sorprendente. Un famigerato set di driver aveva una modalità "corretta & lenta" rispetto alla "fast & errata" che era stata selezionata se chiamata da QUAKE.EXE. È del tutto possibile che i driver si comportino diversamente per diversi numeri di CPU apparenti. Forse (tornando alla speculazione) viene utilizzato un diverso meccanismo di sincronizzazione. Uso improprio di spinlock ?
"L'uso improprio delle primitive di chiusura e sincronizzazione" è una fonte molto comune di bug. (Il bug che dovrei guardare sul lavoro mentre scrivo questo è "crash se si cambiano le impostazioni della stampante contemporaneamente al termine del lavoro di stampa").
Modifica 2: commenti menzionano il sistema operativo che tenta di evitare l'inattività del thread. Si noti che il gioco può avere il proprio quasi-scheduler interno per l'assegnazione del lavoro ai thread, e ci sarà un meccanismo simile nella scheda grafica stessa (che è effettivamente un sistema multitasking a sé stante). Le probabilità di un bug in uno di questi o l'interazione tra di loro sono piuttosto elevate.
www.ecsl.cs.sunysb.edu/tr/ashok.pdf (2008) è una tesi di laurea sulla migliore pianificazione per le schede grafiche che menziona esplicitamente che normalmente usano la pianificazione primo arrivato, primo servito, che è facile implementare in sistemi non preventivi. La situazione è migliorata? Probabilmente no.