Programowanie współbieżne

0

Witam,
poszukuję materiałów i przykładów na temat programowania współbieżnego (preferowane języki c, c++, c#). Podejrzewam, że to wszystko będzie trzeba zrobić na wątkach, tylko co jeśli np. 2 obiekty/ watki muszę się z sobą porozumiewać/ komunikować?

Można sobie przyjąć 2 postacie i teraz zakładamy że każda postać to wątek i one w tym samym czasie muszą wykonywać to samo lub różne rzeczy, np. jeden szuka czegoś w tym kwadracie, a drugi w innym i komunikują się między sobą które kwadraty już byłby przeszukane. Dobrze to rozumiem?

2

W każdym środowisku jest zupełnie inaczej.

Takie zgrubne rozeznanie:

Komunikować możesz się na wiele sposobów, np:

0

Jeszcze masz D:

  • Przykład wykorzystania sygnałów:
import std.stdio, std.concurrency;
 
void foo()
{
    bool cont = true;
 
    while (cont)
    {
        receive( // delegates are used to match the message type
            (int msg) => writeln("int received: ", msg),
            (Tid sender) { cont = false; sender.send(-1); },
            (Variant v) => writeln("huh?") // Variant matches any type
        );
    }
}
 
void main()
{
    auto tid = spawn(&foo); // spawn a new thread running foo()
 
    foreach (i; 0 .. 10)
        tid.send(i);   // send some integers
    tid.send(1.0f);    // send a float
    tid.send("hello"); // send a string
    tid.send(thisTid); // send a struct (Tid)
 
    receive((int x) => writeln("Main thread received message: ", x));
}
  • zrównoleglanie pętli:
auto logs = new double[1_000_000];
foreach(i, ref elem; parallel(logs, 100)) {
  elem = log(i + 1.0);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1