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 przykładu wszystkie modyfikacje wykonuje się w pliku hexorPL.c

Instrukcja

W celu dodania wątku do programu należy:

  1. dopisać funkcję wątku np.

void * thread (void *unused)

{
   // tu kod wątku
}
  1. dodać zmienną wątku pthread_t t;
  2. uruchomić wątek pthread_create (&t, NULL, thread, NULL);
  3. poczekać na zakończenie wątku pthread_join (t, NULL);
    • pierwszy argument to struktura pthread_t
    • drugi NULL
  4. 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);
     }
pl/hexor/hexor_prolog_mt.txt · ostatnio zmienione: 2017/07/17 08:08 (edycja zewnętrzna)
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