Author: Hristo
Date: 22:50:10 04/25/01
Go up one level in this thread
On April 25, 2001 at 18:40:04, Vincent Diepeveen wrote:
... [snip]
>Many thanks.
>
>I don't see how it works, sorry to bother you again!
>
>I do not want to waste 100ms of time for threads.
>
>in my main i'm doing actually not only starting threads but also
>other processes.
>
>Basically those other processes i want to idle:
>
>P1.Main() {
> allocate shared memory;
> start other searchprocesses P2..P4;
> start i/o thread
>
> thisprocessnumber = P1;
> Search();
>}
>
>.. iothread() {
> for(;;) {// this thread doing i/o for all processes
> now wait for keyboard input and idle when waiting for it;
> parse_keyboard_input();
>
> if( relevantkeyboardinput ) { /* so i start to search */
> // now somehow wakup P1..Pn. what i do now is, is to give it
> sharedtree->gosearch = true;
> }
>
> }
>}
This function will go to sleep until the "return" is pressed.
After this the select will return and you can parse the data.
--- possible implementation to monitor keyboard input ---
#include <stdio.h>
int fd = 0; // standard input
fd_set fd_read;
int fd_ready, nread;
int bs = 32;
char buffer[bs+1];
FD_ZERO(&fd_read);
FD_SET(fd, &fd_read);
// last parameter here is the timeout variable pointer
// when passing 0 we are going to wait forever
fd_ready = select(1, &fd_read, 0,0,0);
if (fd_ready > 0) {
// make sure we read only as much data as it is available
ioctl (fd, FIONREAD, &nread);
if (nread > 0){
nread = (nread > bs)? bs : nread;
nread = read (fd, buffer, nread);
buffer[nread] = 0;
}
}
--------------------------------------------
In the above example "fd" can be any file descriptor ...
The IPC stuff that you need seems, rather, simple ...
so I might be able to give you an example code tomorrow.
I'm too tired right now. ;-(
hristo
>
>/* now one example is other search */
>
>P2.Search() { /* in main already initialized and synchronized with P1 */
>
> idle till you get go command and don't waste 100ms or whatever before
> receiving it as it must wake up DIRECTLY
>}
>
>In short the interesting thing is what to do for P1() to message
>both a thread in the own process to start searching and to also
>message other processes to start searching. Bob says
>i should use Select there somehow, with what function do i message
>this function?
>
>With signal?
>
>Note locking/unlocking i'll manage myself. i've pretty much learned
>to work with locking/unlocking but not with idling yet :)
>
>So interesting to know is how to wait for keyboard input without
>wasting system time while waiting and what
>function to use to message Select in other processes (and one in
>the own process) that it must wake up.
>
>So please read carefully other PROCESSES not threads!!
>It's especially the IPC that worries me :)
>
>>hristo
>>
>>
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.