asenkron programlama
başlık "setlocalelcallturkish" tarafından 21.06.2021 21:17 tarihinde açılmıştır.
1.
future sınıfını geriye döndüren fonksiyonlara ve bu fonksiyonları barındıran programlamalara genel olarak verilen addır. jenerik bir değer alan bu sınıfta eğer ki bir değeri döndürmek isterseniz mutlaka onu future sınıfına bildirmeniz gerekmektedir. bu da size bir callback işlev sunar.
basitçe;
#include <iostream>
#include <future>
#include <thread>
#include <functional>
using std::cout;
int main()
{
std::packaged_task<int()> task([]{ return 1; });
std::future<int> a = task.get_future();
std::thread t(std::move(task));
std::future<int> b = std::async(std::launch::async, []{ return 2; });
std::promise<int> p;
std::future<int> c = p.get_future();
std::thread( [&p]{ p.set_value_at_thread_exit(3); }).detach();
a.wait();
b.wait();
c.wait();
cout << "values: "
<< a.get() << ' ' << b.get() << ' ' << c.get() << '\n';
t.join();
return 0;
}
son bir açıklama yaparak konuyu daha da açıklama gereği duydum, std::future readerken std::promise ise writer durumundadır yani bir thread hem okuma hem yazma yapamıyor ki böylece nesnelerin sürdürülebilitesi garantileniyor.
umuyorum ki mantık anlaşıldı. bu çok önemli bir konu olmakla birlikte vazgeçilmez uygulamaların ve her uygulamanın/programın temelini oluşturmaktadır.
basitçe;
#include <iostream>
#include <future>
#include <thread>
#include <functional>
using std::cout;
int main()
{
std::packaged_task<int()> task([]{ return 1; });
std::future<int> a = task.get_future();
std::thread t(std::move(task));
std::future<int> b = std::async(std::launch::async, []{ return 2; });
std::promise<int> p;
std::future<int> c = p.get_future();
std::thread( [&p]{ p.set_value_at_thread_exit(3); }).detach();
a.wait();
b.wait();
c.wait();
cout << "values: "
<< a.get() << ' ' << b.get() << ' ' << c.get() << '\n';
t.join();
return 0;
}
son bir açıklama yaparak konuyu daha da açıklama gereği duydum, std::future readerken std::promise ise writer durumundadır yani bir thread hem okuma hem yazma yapamıyor ki böylece nesnelerin sürdürülebilitesi garantileniyor.
umuyorum ki mantık anlaşıldı. bu çok önemli bir konu olmakla birlikte vazgeçilmez uygulamaların ve her uygulamanın/programın temelini oluşturmaktadır.
devamını gör...