Sobes.tech
Junior — Middle

İşlem akışları arasında veri alışverişi nasıl gerçekleştirilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C/C++’ta iş parçacıkları arasında veri alışverişi birkaç şekilde gerçekleştirilebilir:

  1. Ortak değişkenler ve bellek — iş parçacıkları, ortak bellek alanında veri okuyup yazabilir. Yarış koşullarını önlemek için senkronizasyon mekanizmaları (mutexler, semaforlar) kullanılır.

  2. Mutexler ve kilitler — kritik bölümleri korumak ve veri tutarlılığını sağlamak için.

  3. Koşul değişkenleri (condition variables) — iş parçacıklarının belirli bir durum veya olay beklemesine olanak tanır.

  4. Mesaj kuyrukları (message queues) — iş parçacıkları, güvenli kuyruklar aracılığıyla mesaj alışverişi yapabilir.

  5. Atomik işlemler — kilitsiz basit işlemler için, std::atomic kullanılır.

Ortak bir değişkeni korumak için mutex kullanımı örneği:

#include <iostream>
#include <thread>
#include <mutex>

int sayac = 0;
std::mutex mtx;

void artir() {
    for (int i = 0; i < 1000; ++i) {
        std::lock_guard<std::mutex> lock(mtx);
        ++sayac;
    }
}

int main() {
    std::thread t1(artir);
    std::thread t2(artir);
    t1.join();
    t2.join();
    std::cout << "Sayaç: " << sayac << std::endl;
    return 0;
}

Bu nedenle, veri alışverişi yöntemi, göreve ve senkronizasyon ile performans gereksinimlerine bağlıdır.