 Yazdırırken muteksleri kullanarak çok iş parçacıklı FizzBuzz yazın.
İşte muteksleri kullanan C++'da çok iş parçacıklı FizzBuzz uygulamasına bir örnek: ```cpp #include <iostream> #include <thread> #include <mutex> std::mutex mtx; void fizzbuzz(int n) { for(int i = 1; i <= n; ++i) { std::string output = ""; if(i % 3 == 0) output += "Fizz"; if(i % 5 == 0) output += "Buzz"; if(output.empty()) output = std::to_string(i); // Tek seferde yalnızca bir iş parçacığının yazdırılmasını sağlamak için mutex kullanın std::lock_guard<std::mutex> lock(mtx); std::cout << çıktı << std::endl; } } int main() { const int N = 15; std::thread t1(fizzbuzz, N); std::thread t2(fizzbuzz, N); t1.join(); t2.join(); 0 dönüşü; } ``` Bu uygulamada, `fizzbuzz`, aynı `n` argümanıyla iki kez çağrılır. Ardından, her biri aynı "n" bağımsız değişkeniyle "fizzbuzz" çalıştıran iki ileti dizisi oluşturulur. Her iş parçacığı yürütülürken, 1'den 'n'ye (dahil) kadar olan sayılar üzerinde bir döngü yinelenir ve her sayının "Fizz", "Buzz", "FizzBuzz" ile değiştirilmesi veya olduğu gibi bırakılması gerekip gerekmediğini belirler. Ortaya çıkan çıktı dizesi daha sonra konsola yazdırılır, ancak yalnızca bir defada yalnızca bir iş parçacığının yazdırıldığından emin olmak için bir muteks üzerinde bir kilit elde edildikten sonra. "main" işlevi, geri dönmeden önce her iki iş parçacığının da bitmesini bekler.