static değişkenler
- Rust kursu
- Başlangıç
- Ders 10/115
- 4 dk
static ile statik ömürlü değişkenler tanımlarsın.
static değişkenler
static, programın tüm ömrü boyunca bellekte sabit bir adreste duran değerdir. const her kullanımda kopyalanırken static tek bir örnektir:
static UYGULAMA: &str = "Not Defteri";
fn main() {
println!("{}", UYGULAMA);
}Türü 'static ömürlüdür. String sabitleri de ("...") aslında &'static str türündedir.
Güvenli küresel durum
Değişmesi gereken küresel bir sayaç için atomik türler kullanılır; unsafe gerekmez:
use std::sync::atomic::{AtomicU32, Ordering};
static ISTEK: AtomicU32 = AtomicU32::new(0);
fn kaydet() {
ISTEK.fetch_add(1, Ordering::Relaxed);
}Çalışma anında bir kez hesaplanan küresel değerler için std::sync::OnceLock vardır.
Uygulama Atomik sayaç
static SAYAC: AtomicU32 = AtomicU32::new(0); tanımla. main içinde üç kez SAYAC.fetch_add(1, Ordering::Relaxed); çağır ve SAYAC.load(Ordering::Relaxed) değerini yazdır.
Başlangıç kodu
use std::sync::atomic::{AtomicU32, Ordering};
fn main() {
// buraya yaz
}Örnek çözüm
use std::sync::atomic::{AtomicU32, Ordering};
static SAYAC: AtomicU32 = AtomicU32::new(0);
fn main() {
for _ in 0..3 {
SAYAC.fetch_add(1, Ordering::Relaxed);
}
println!("{}", SAYAC.load(Ordering::Relaxed));
}Beklenen çıktı
3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>static mut</code> değişkenine erişim neden <code>unsafe</code> gerektirir?
- static her zaman unsafe'tir
- Gerektirmez
- Birden çok iş parçacığı aynı anda yazarsa veri yarışı olabilir Doğru cevap
- Daha yavaş olduğu için
Açıklama: Derleyici küresel değiştirilebilir duruma eşzamanlı erişimi denetleyemez; güvenli alternatifler AtomicUsize, Mutex ya da OnceLock'tur.
2 Küresel değer
____ SURUM: &str = "1.2.0";
static SURUM: &str = "1.2.0";
Açıklama: static programın ömrü boyunca yaşayan küresel bir değer tanımlar.
3 Tanım ve özellik
| Kavram | Anlamı |
|---|---|
const |
Her kullanımda kopya |
static |
Tek bellek adresi |
static mut |
unsafe gerektirir |
AtomicU32 |
Güvenli küresel sayaç |