Windows 7 limita il numero di thread creati da un processo?


2

Alcune versioni di Windows 7 (32 o 64 bit) gestiscono il numero di thread creati da un processo specifico? In tal caso, esiste un modo per configurare un limite massimo di thread sul sistema (ad esempio nel registro)?


Questa è una domanda per il tuo programma? O vuoi limitare altri programmi sul tuo sistema?
EBGreen

Voglio limitare il numero di thread gestito da Windows.
Diogo,

Non puoi farci nulla se non hai scritto il programma che sta creando thread.
EBGreen

E per essere chiari, anche se ci fosse un modo per limitarlo, molto probabilmente interromperesti il ​​programma che sta cercando di creare un nuovo thread. Se il programma fosse correttamente codificato, gestirà il fallimento nella creazione del thread, ma nella migliore delle ipotesi significa che il programma non sarebbe in grado di fare qualsiasi cosa stia creando il battistrada da fare.
EBGreen

Risposte:


3

Il sistema operativo non limita esplicitamente la creazione di thread. È essenzialmente controllato da vincoli di risorse. Se il sistema operativo dispone delle risorse, il processo può creare tutti i thread desiderati fino a quando non ci sono più risorse.


In un'app a 32 bit in esecuzione senza l'opzione "Indirizzo di grandi dimensioni", supponendo che l'app non abbia sovrascritto l'allocazione di stack predefinita, esiste un limite derivato leggermente inferiore a 2000 thread per processo. Questo perché la dimensione dello stack riservato predefinita è 1 MiB e lo spazio degli indirizzi in modalità utente di processo è 2 GiB. "Un po 'meno" è perché ci sono già alcune cose nello spazio degli indirizzi solo per supportare qualsiasi programma semplice (quindi non hai abbastanza 2 GiB gratis in un nuovo processo e quello che hai non è tutto in un pezzo contiguo ).
Jamie Hanrahan,

1

Il concetto tecnico per raggiungere questo obiettivo è un lavoro che consenta limiti .

C'è praticamente qualcosa che può essere limitato, ma non i thread (al momento rispondendo alla domanda).


1

Sì, è possibile. Con CPU multi-processore, è possibile impostare il numero di core utilizzati da un programma. Ad esempio, una CPU I8 con 8 core, è possibile limitare il computer a utilizzare un massimo di solo 7 core (o 6,5,4 ..). Esegui task manager (ctrl-alt-del), vai a Processi e seleziona il programma. Fare clic con il tasto destro sul nome del programma e selezionare "imposta affinità". Si aprirà una finestra che mostra i core disponibili per il programma e qui è possibile rimuovere o aggiungere successivamente i core da utilizzare per il programma.


1
Non credo ci sia una CPU i8. Intel ha solo CPU i3, i5 e i7. Si prega di precisare.
music2myear,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.