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:
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);
poczekać na zakończenie wątku pthread_join (t, 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);
}