From: Mario Domenech Goulart <[email protected]> Subject: Re: [Chicken-users] Pipe and thread problem Date: Wed, 24 Oct 2012 09:44:37 -0400
> Hi Felix, > > On Wed, 24 Oct 2012 08:04:37 -0400 (EDT) Felix > <[email protected]> wrote: > >> From: Aaron Patterson <[email protected]> >> Subject: [Chicken-users] Pipe and thread problem >> Date: Tue, 23 Oct 2012 14:30:57 -0700 >> >>> Hi, I'm trying to simulate reading from a TTY that writes every two >>> seconds. I want to do this with a pipe and two threads, one thread >>> writes every N seconds, while the other reads any data available on the >>> pipe. >>> >>> Unfortunately, my code just hangs. After speaking with the fine people >>> in #chicken, it seems that this may be a bug. We played with different >>> calls to put the threads to sleep, and different functions to read data, >>> but they all ended up freezing at some point. >> >> The ports obtained from calls to "open-[input|output]-file*" use >> internally the "stream-port" class (ports on FILE* streams, in this >> case created via fdopen(3)). These are not thread-aware, AFAICT. Ports >> created for socket-fd's (tcp.scm) and processes (posixunix.scm, see >> specifically ##sys#custom-[input|output]-port") apparently do. > > From a user perspective (i.e., without knowing how things are > implemented by Chicken), how can we know what procedures can be used > with threads? Only from the documentation. I'm not sure I understand the question. It also depends on how likely blocking is. > > Wouldn't such a misuse of I/O operations in the presence of threads be > a possible cause of #858? #858 refers to socket ports, which are implemented differently from the ports that refer to files. Note that spiffy also involves sendfile, which _does_ non-blocking I/O for files. I think. cheers, felix _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
