Whenever the key is changed(by some other threads), my call back notifier is executed in which I update my static global variable with the new key. This key is used everywhere in the program to decrypt some data.
Ciò che ti sta intrappolando in questo tipo di pensiero è il concetto di "chiave". Dovrebbe essere "una chiave".
Pensa che la chiave sia globale, quindi qualsiasi cosa possa trattenerla deve essere globale. Immagina di cambiare le tue esigenze e all'improvviso ci sono 5 tasti in giro.
Non riesci a immaginarlo? Bene, immagina 5 sistemi, che fanno quasi la stessa cosa, che devono avere chiavi diverse e tutti devono essere parte della tua applicazione. Quanto del tuo codice potrebbe essere riutilizzato?
La chiave appartiene a un contesto. All'interno di quel contesto ci sarà solo una chiave. Ma ciò non significa che ci sarà sempre un solo contesto.
Piuttosto che forzare tutto per trovare questa chiave conoscendo "l'unica vera chiave", dì loro in quale contesto si trovano passandole in qualche modo per trovare la chiave che gli interessa.
Ciò significa che la chiave verrà comunque memorizzata in un unico posto. Ma ora solo un posto decide dove si trova quel posto. Se lo fai globale allora tutto deve sapere dove è e CONVENIRE su dove si trova. Ick.