CodeBlanks Logo Icon CodeBlanks

static değişkenler

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

main.rs
use std::sync::atomic::{AtomicU32, Ordering};

fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
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

Soru
____ SURUM: &str = "1.2.0";
Cevap
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ç

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma