Hirdetés
- Nyomtató topik
- Majdnem 20 évvel később befejezték a rajongók a PC-s Grand Theft Auto IV-et
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- OLED TV topic
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Épített vízhűtés (nem kompakt) topic
- SD memóriakártyák (SD, SDHC, SDXC, micro SD)
- ASUS ROG Ally
- Milyen TV-t vegyek?
- sellerbuyer: Egy teljesen új platformot kapunk! Új korszak kezdődik?
- intecpc: Hogyan készítsük fel a számítógépünket a Windows 11-re? – Lépésről lépésre
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- aquark: Jó platformer játékokat keresek!
- Geri Bátyó: Agglegénykonyha 5 – Edények és konyhai eszközök
-
PROHARDVER!
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
cog777
senior tag
Hianyoltam az egyszeru kommunikaciot a szalak kozott, regebben Qt-t es Boost signal-t hasznaltam. Aztan kiderult hogy tok egyszeru a promise-al kuldeni adatot a belole kinyert future-be.
Itt van egy masik pelda adatcserere, a producer megvarja amig a consumer elindult, majd kuldi az adatot. Az egyik direkt async-et hasznal, a masik thread-et. FreeRTOS alatt a Thread ugyanugy FreeRTOS utasitasokat hasznal csak el van rejtve a stack meg egy csomo minden. De a Promise-future paros tenyleg nagyon jo. Ha megvan irva a move constructor es assignment operatora a struct-nak, akkor nincs nagy adatmozgas ha promise-t hasznalsz.
Gyakorlatilag: konstruktor hivas, majd move konstruktor.#include <iostream>
#include <future>
#include <thread>
#include <chrono>
/*
Ez tortenik a struct keszitesekor:
ctor2
move ctor
move ctor
Received signal: 42
*/
struct data_s
{
data_s() { std::cout << "ctor1" << std::endl; }
data_s(int v) : data(v) { std::cout << "ctor2" << std::endl; }
data_s(data_s &&rhs) : data(std::move(rhs.data)) { std::cout << "move ctor" << std::endl; }
data_s &operator=(const data_s &rhs)
{
std::cout << "copy operator" << std::endl;
if (this == &rhs)
return *this;
data = rhs.data;
return *this;
}
data_s &operator=(data_s &&rhs)
{
std::cout << "move operator" << std::endl;
data = std::move(rhs.data);
return *this;
}
int data{0};
};
void task_consumer_fnc(std::future<data_s> &&f, std::promise<void> &&ready_signal)
{
ready_signal.set_value();
while (true)
{
if (f.wait_for(std::chrono::milliseconds(100)) == std::future_status::ready)
{
auto d = f.get();
std::cout << "Received signal: " << d.data << std::endl;
break;
}
}
}
void task_producer_fnc(std::promise<data_s> &&signal, std::shared_future<void> &&ready_slot)
{
ready_slot.get();
// std::this_thread::sleep_for(std::chrono::milliseconds(1000));
signal.set_value({42});
}
int main()
{
std::promise<data_s> signal;
auto slot = signal.get_future();
std::promise<void> ready_signal;
std::shared_future<void> ready_slot(ready_signal.get_future());
std::packaged_task<void(std::promise<data_s> &&, std::shared_future<void> &&)> task_producer(task_producer_fnc);
auto future_producer = std::async(std::launch::async, std::move(task_producer), std::move(signal), std::move(ready_slot));
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
std::packaged_task<void(std::future<data_s> &&, std::promise<void> &&)> task_consumer(task_consumer_fnc);
std::thread thread(std::move(task_consumer), std::move(slot), std::move(ready_signal));
thread.join();
return 0;
}
Új hozzászólás Aktív témák
- Nyomtató topik
- A Temu diktál Magyarországon, a hazai e-kereskedők fulladoznak
- Nyíregyháza és környéke adok-veszek-beszélgetek
- Majdnem 20 évvel később befejezték a rajongók a PC-s Grand Theft Auto IV-et
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Arena Breakout: Infinite
- Formula-1
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- sellerbuyer: Egy teljesen új platformot kapunk! Új korszak kezdődik?
- OLED TV topic
- További aktív témák...
- Eladó Msi Rtx Suprimx 4080 vga, gari 25.12.27ig
- ASUS TUF gamer laptop Ryzen 7 3750H, GTX 1660 Ti, szép állapotban
- (ÁRCSÖKKENÉS) Eladó Meta Quest Pro 256GB VR szemüveg Szinte teljesen új állapotban
- Oura Ring 4 Gold, Rose Gold (8,10-es méret) ÚJ ÁRA - 235.000 Ft
- Eladó: Teljesen Új Ooni Koda 2 Max Gázüzemű Pizzakemence Bontatlan, Gyári csomagolásban!
- Apple iPhone 16 128GB,Újszerű,Kábel,12 hónap garanciával
- Surface Laptop 4 i7-1185G7 16GB 256GB
- Takamine GD20CE elektroakusztikus gitár keménytokkal együtt. Kb 10 alkalommal használt,nem hordoztam
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- ÚJ HP OmniBook Ultra Flip 14"OLED 2,8 K 120Hz - Ultra 7 256V - 16GB - 1TB - 2,5 év gari - MAGYAR
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest