Strona główna Artykuły News Pierwsza wersja distortos wydana!
Pierwsza wersja distortos wydana!
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Freddie Chopin   
Czwartek, 10 Marzec 2016 16:39

Niecałe dwa tygodnie temu, po 584 dniach od rozpoczęcia pracy nad systemem distortos, w końcu opublikowałem pierwszą wersję - 0.1.0. Listę funkcjonalności zawartych w tym wydaniu można znaleźć w change logu, natomiast paczki z kodem źródłowym można znaleźć na stronie http://distortos.org/ w dziale Downloads. W tym samym miejscu można również pobrać opublikowane tego samego dnia paczki z szablonem projektu oraz z przykładowymi aplikacjami. Ta druga paczka zawiera na razie jedynie "nieśmiertelne" miganie LEDami przy użyciu statycznych lub dynamicznych wątków. Nawet nagrałem filmik z działania tej aplikacji (;

Na zachętę - poniżej zamieszczam "magiczny" kod, który w asynchroniczny sposób oblicza wynik funkcji sinus dla czterech różnych liczb w czterech osobnych wątkach. Jest to kompletny i działający kod aplikacji - nie trzeba nic więcej dodawać!

#include "distortos/board/leds.hpp"
#include "distortos/chip/ChipOutputPin.hpp"
#include "distortos/StaticThread.hpp"

void sinWrapper(const double operand, double& result)
{
  result = sin(operand);
}

int main()
{
  const double operands[4] {0.9867816015, 0.4641984149, 0.4665572273, 0.8926178650};
  double results[4] {};
  auto sinThread0 = distortos::makeAndStartStaticThread<512>(1, sinWrapper, operands[0], std::ref(results[0]));
  auto sinThread1 = distortos::makeAndStartStaticThread<512>(1, sinWrapper, operands[1], std::ref(results[1]));
  auto sinThread2 = distortos::makeAndStartStaticThread<512>(1, sinWrapper, operands[2], std::ref(results[2]));
  auto sinThread3 = distortos::makeAndStartStaticThread<512>(1, sinWrapper, operands[3], std::ref(results[3]));

  // do something while the threads are calculating results...
  distortos::board::leds[0].set(true);

  // make sure the threads are done
  sinThread0.join();
  sinThread1.join();
  sinThread2.join();
  sinThread3.join();

  // results are ready!
  distortos::board::leds[0].set(false);
}
Zmieniony: Czwartek, 10 Marzec 2016 17:55