Zitat Zitat von HaWe Beitrag anzeigen
Anderes Thema ist Multitasking.

...

Wie ist also MT bei Galileo-Sketch geregelt?
So, der Galileo läuft wieder, daher kann ich hier neues vermelden:

Ja, wenn der Galileo mit Windows iot läuft, geht C++11 Multithreading, hier ein Stück Code aus einem Visual Studio Projekt

Code:
#include "stdafx.h"
#include "arduino.h"

// Diese beiden Funktionen sollen parallel zum Blink Sketch laufen.
// Im Moment tun sie nicht viel, sie schreiben nur in Debug Ausgabe Fenster von Visual Studio.

void Worker1()
{
    while (true)
    {
        Log("Eins\n");
        Sleep(1000);
    }
}

void Worker2()
{
    while (true)
    {
        Log(L"Zwo\n");
	Sleep(2000);
    }
}

// Hier startet das Programm

int _tmain(int argc, _TCHAR* argv[])
{
    // Starten der beiden Threads
    std::thread t1(Worker1);  
    std::thread t2(Worker2);

    // Starten des Blink Sketch
    return RunArduinoSketch();
}

// Am Rechner ist eine RGB-LED ...

int ledRed = 11;
int ledGreen = 6;
int ledBlue = 10;

void setup()
{
    pinMode(ledRed, OUTPUT);       
    pinMode(ledGreen, OUTPUT);
    pinMode(ledBlue, OUTPUT);

    digitalWrite(ledRed, LOW);
    digitalWrite(ledGreen, LOW);
    digitalWrite(ledBlue, LOW);
}

// the loop routine runs over and over again forever:
void loop()
{
    // Einfaches Blink Beispiel

    digitalWrite(ledRed, HIGH);
    delay(1000);
    digitalWrite(ledRed, LOW);
    delay(1000);

    // Das funktioniert auch im Sketch-Teil, std::thread macht hier aber Probleme (Absturz)
    std::async(std::launch::async, []{ Log(L"Drei\n"); });
}