Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
pl:hexor:hexor_prolog_mt [2007/11/28 16:36]
root Document moved from pl:hexor_prolog_mt
pl:hexor:hexor_prolog_mt [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +====== Programy wielowątkowe w Prologu ======
  
 +Uruchomienie dodatkowego wątku w prologu polega na wywołaniu pl_call z osobnego wątku stworzonego w języku C. 
 +Korzystając z  {{:​pl:​hexor:​hexor_prolog.tar.gz|przykładu}} wszystkie modyfikacje wykonuje się w pliku __hexorPL.c__
 +
 +===== Instrukcja =====
 +
 +W celu dodania wątku do programu należy:
 +  - dopisać funkcję wątku np.
 +  ​
 +  void * thread (void *unused)
 +  {
 +     // tu kod wątku
 +  }
 +
 +  - dodać zmienną wątku ''​pthread_t t;''​
 +  - uruchomić wątek ''​pthread_create (&t, NULL, thread, NULL);''​
 +       * pierwszy argument to adres struktury ''​pthread_t''​
 +       * trzeci to funkcja wątku
 +       * pozostałe ''​NULL''​
 +       * szczegóły min. na [[http://​en.wikipedia.org/​wiki/​POSIX_Threads]]
 +  - poczekać na zakończenie wątku ''​pthread_join (t, NULL);''​
 +       * pierwszy argument to struktura ''​pthread_t''​
 +       * drugi ''​NULL''​
 +  - jeśli wątek ma uruchamiać kod w prologu jego funkcja powinna zawierać następujące elementy:
 +       ​* ​ wywołanie ''​pl_attach_engine ()''​ - podpięcie się do interpretera prologu
 +       ​* ​ wywołanie ''​pl_call ("​runme",​ NULL)''​ - wywołanie predykatu ''​runme''​
 +       ​* ​ wywołanie ''​pl_detach_engine ()''​ - odłączenie od interpretera
 +
 +       void *thread1 (void *unused)
 +       {
 +         ​pl_attach_engine ();
 +         ​pl_call ("​runme",​ NULL);
 +         ​pl_detach_engine ();
 +         ​return (NULL);
 +       }
 +
 +
 +
 +
 +
 +
 + 
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0