
Zitat von
HaWe
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"); });
}
Lesezeichen