Hi - I have a program that seems to be getting deadlocked, where the scheduler isn't allowing other threads to run.
Basically, I pre thread 8 threads (we'll call these process A), which all block (calling recvfrom) on socket A. I also spawn another single thread (process B), that blocks (using select) on socket B. If no data comes in on socket A (i.e. process A does not ever get woken up), then process B can receive data/process data from socket B no problem. However, once data comes in on socket A, and one of the eight threads in the pool gets picked to process this data, everything in the entire program stops *until* all 8 threads have processed something. So, it's like either 0 or 8 (all) threads in process A have to have been scheduled in for the rest of the program to run. Once all 8 threads process something, then execution of the program resumes as normal. Is there something special about multiple threads blocking on a single I/O request (i.e. the same socket)? How can I find out more information about why the rest of the threads are not getting scheduled to run? Also, I did configure pth with the --enable-syscall-soft option, as well as the --enable-pthread option. I've gone so far as to put a #define _select __pthread_select (and recvfrom) directly into the top of the source file. Any suggestions? Thanks, Dave ______________________________________________________________________ GNU Portable Threads (Pth) http://www.gnu.org/software/pth/ User Support Mailing List [EMAIL PROTECTED] Automated List Manager (Majordomo) [EMAIL PROTECTED]