Forum: Diğer Konular RSS
C++ 11 std::async aslında thread mi kullanıyor?
İbrahim #1
Üye Eki 2015 tarihinden beri · 129 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: C++ 11 std::async aslında thread mi kullanıyor?
Selamün Aleyküm;

Ben C++ 11 ile  std::async kullanarak basit bir kod yazdığımda bir hata vererek benden -lpthread eklemeniz istedi. Ekleyince de çalıştı. Acaba std::async arkaplanda thread mi kullanıyor?

#include <iostream>
#include <future>
using namespace std;
 
int main()
{
  auto res0 = async(launch::async, [] { for (int i = 0; i < 10; i++) cout << i << endl; });
  auto res1 = async(launch::async, [] { for (char i = 'a'; i < 'g'; i++) cout << i << endl; });
 
  res0.get();
  res1.get();
}

Ayrıca bu kod ilk önce 0'dan 9'a kadar sayıları basıyor, sonra da a'dan f'ye kadar harf basıyor. Neden eşzamansız çalışmıyor? Teşekkürler.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
C++, thread kullanılmasını şart koşmuyormuş ama bütün modern ortamlarda öyle olduğunu varsayabiliriz.

cout gibi paylaşımlı nesnelerin hangi anda hangi std::anync thread tarafından kullanıldığını veya bu nesnelerin kilitlenip kilitlenmediklerini bilmiyorum. Eş zamanlı işlediklerini görebilmen için birisinin işi bitmeden ötekine geçilmesi gerekir. Oysa her ikisi de işlerini çok kısa zamanda bitiriyorlar. Ne olup bittiğini anlayabilmek için çıkışa yazı yazdırılan ifadelerden önce rasgele sürelerle bekleme yerleştirmeni öneririm. Belki o zaman çıktıda karışık olarak belirirler.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-06-24, 22:27:52 (UTC -07:00)