#include <stdio.h> #include <stdlib.h> #include <semaphore.h> #include <pthread.h> sem_t smt; void DisplayData() { printf ("Display a frame/n"); } void *ThreadFuncDisplay(void *arg) { while (1){ printf ("sem_wait............................../n"); sem_wait (&smt); DisplayData(); } } void *ThreadFuncControl(void *arg) { while (1){ sleep (3); sem_post (&smt); printf ("sem_post/n"); } } int main(int argc, char *argv[]) { gtk_init (&argc, &argv); int rt; pthread_t pt_dsp; pthread_t pt_ctrl; rt = sem_init (&smt, 0, 0); if (rt){ perror ("semaphore initialization failed"); } pthread_create (&pt_dsp, NULL, ThreadFuncDisplay, NULL); pthread_create (&pt_ctrl, NULL, ThreadFuncControl, NULL); gtk_main(); return 0; }