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