Come faccio a sapere se devo preoccuparmi della sicurezza dei thread?

2

Non so molto su come i computer lavorano internamente, quindi non so molto sul multithreading e quando avviene. So che è importante in database o applicazioni web e simili, dove molte macchine diverse provano ad accedere o modificare le stesse risorse, ma per quanto riguarda il codice "classico", come i calcoli?

Ho pensato di usare LinkedList nel mio codice, ma ho letto che non è thread-safe (C #). Quindi la domanda è se devo anche preoccuparmi.

Il problema concreto è questo: ho una classe Interval che rappresenta gli intervalli chiusi, internamente archiviati come due valori doppi (limite inferiore e superiore). Ho un metodo che richiede un intervallo I e un elenco L di intervalli disgiunti in ordine ascendente. Il metodo modifica L tale che equivale a unire gli intervalli della lista con I ; l'ordine è conservato.

Esempio:

L is: [-3, 0], [2, 4], [5, 18], [21, 22]
I is: [3, 6]
resulting modified L: [-3, 0], [2, 18], [21, 22]

L'algoritmo trova determinati intervalli di confine (l'intervallo più a sinistra e più a destra di L che si interseca con I e gli intervalli accanto a questi due), Remove s tutti gli intervalli tra di essi e Add sa nuovo intervallo fra loro. Quindi questo è il posto in cui ho bisogno di sapere se la sicurezza del thread è una cosa qui.

Quindi, come faccio a saperlo?

    
posta Kjara 28.07.2016 - 08:40
fonte

2 risposte

8

Devi preoccuparti della sicurezza dei thread se hai più thread che accedono alla stessa struttura dati condivisa (mutevole). Se l'algoritmo che descrivi viene eseguito in un singolo thread, non devi preoccuparti.

Un programma C # ordinario è a thread singolo per impostazione predefinita. È necessario avviare attivamente nuovi thread per ottenere un programma con multithreading. Se non lo fai, sei al sicuro.

    
risposta data 28.07.2016 - 08:51
fonte
1

Non stai parlando di quanti thread stanno facendo lavoro qui, e che stanno facendo ciò che funziona. Se questo è un singolo thread, non devi preoccuparti della sicurezza dei thread.

Quando ti devi preoccupare della sicurezza dei thread, allora?

Quando più thread accedono alla stessa struttura dati e almeno uno di questi thread lo sta modificando. Quindi:

Se leggi solo i dati: Nessun problema Se hai solo un thread: nessun problema Se modifichi i dati mentre altri thread potrebbero accedervi: potrebbero esserci problemi

    
risposta data 28.07.2016 - 08:54
fonte

Leggi altre domande sui tag