====== 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); }