Hey,

I'm developing a multi-threaded program in C.
I have a thread - a dispatcher responsible for receiving information from a pipe and sending it to three other threads
I used conditional variables to (try) to synchronize the program, but I'm having some problems.

For a start I used pthread_cond_signal()

Code:
Multi Thread Program
//dispatcher
pthread_cond_signal(&cond)

//thread1
while (letMeWork == 0) {
         puts("COMPRESSOR BLOCKED");
         pthread_cond_wait(&cond, &mutex)
      }
      printf("[COMPRESSOR]");

//thread2
while (letMeWork == 0) {
         puts("ENCRYPTOR BLOCKED");
         pthread_cond_wait(&cond, &mutex)
      }
      printf("[ENCRYPTOR]");
...
What I'm trying to do is: when I receive something in the pipe (the filename) the thread dispatcher sends a signal to thread1 in order for this to compress the file, after that the thread2 will work in that same file (modified by thread1).
Note, I could have different files, so thread1 is compressing one file and thread2 is encrypting another.

The problem is that, after receiving a signal, only thread1 works.
I've tried with broadcast() but in that case it's worse...

Any help is very welcome,

Thanks