Strona g?ówna Artyku?y News Pierwsza wersja distortos wydana!

Menu g?ówne

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