The tasks may rely on each other, in which case a mutex or something similar 
can be used to either keep a variable or a thread can monitor a variable to 
make sure that another thread has completed a specific operation. They don't 
have to be independant of each other.
                Thanks,
Tyler Littlefield
        http://tds-solutions.net
        Twitter: sorressean

On Apr 2, 2010, at 11:55 AM, Knowledge Seeker wrote:

> On 4/2/2010 11:00 PM, Gerald Dunn wrote:
> >> Crux of the discussion ....Thread is needed where one thinks that a
> >> aysnc-operation is needed .
> >> 
> > Basically you have it. I'd expand it to say when want concurrent tasks.
> > 
> Do the 'concurrent tasks' means ... non-dependable / independent 
> concurrent tasks ? By independent I mean there is no concept of 
> producer-consumer, as the producer-consumer are dependent on each other 
> to fill-empty the buffer they share in between.
> 
> > 
> >> In stone-age one used 'interrupts' for this. Right ?.
> >> 
> > Maybe interrupts were invented in the computer stone age but they're still 
> > essential. I'll say every (or nearly every) CPU and 
> > micro(controller/processor) uses interrupts. An 'interrupt' is really an 
> > indication from the hardware that an event has happened- I/O pin switched, 
> > timer expired, UART Rx/Tx, and so on.
> >
> > 
> >> These days one
> >> uses a 'watcher-thread' .......
> >> 
> > Probably not. Typically you can configure the hardware not to do anything 
> > when your interrupt occurs except flip a register value indicating the 
> > event. Your program can periodically check the value of a register to look 
> > for change. This is referred to as polling but there's usually a trade-off 
> > with this implementation. If you poll too frequently you waste time 
> > checking when nothing's happened. If you poll too slowly you introduce 
> > latency from when the event occurred.
> >
> > 
> 'Polling' is logically equivalent to creating a watcher-thread; where we 
> wait for something to happen. The difference is that polling is used in 
> micro-processor level and watcher thread is used in application layer. 
> eg: I poll for if data has come in serial-port or not. (Polling) or I 
> poll for that directory contents are changed (some new addition of file 
> / deletion of file)or not (Keeping a directory watcher-thread).
> 
> > The other method is to register a function pointer or pointers that get 
> > called by the hardware when your interrupt occurs. In this way there's 
> > really no latency and you don't need to worry about the polling concerns I 
> > mentioned if they are actually a concern. In this case your main thread 
> > halts execution where it was at and your interrupt handler is called. The 
> > handler returns and your main thread picks up where it left off.
> >
> > 
> I got this point too. Interrupt handler is logically equivalent 
> event-handler design. Where we register a call-back event handler 
> function, which is called in response to when some event has occurred.
> 
> Something like:
> funchandler()
> {
> //do something when event-id comes
> }
> 
> main()
> {
> Register(funchandler, eventid);
> /// do some processing
> // continue more processing
> }
> 
> But still here a different thread will be used
> CPUThread()
> {
> PostEvent(eventID); //this will post event
> }
> 
> In the above main() is first thread, while funchandler() gets called in 
> the thread-context of CPUThread().
> Right ?
> But then this is also multi-threading ... we are having two threads in 
> this scenario.
> Hence my original thought 'Whenever we think of async operation, we 
> think of multithreading'.
> 
> > On your Intel processor I beleive your Windows installation sends some 
> > assembly instructions to register interrupt handlers. I'm pretty certain 
> > it's the same for all the other OS's and processors.
> >
> > I got a little off subject but hopefully it was helpful.
> >
> > ----- Original Message -----
> > From: Knowledge Seeker
> > To: c-prog@yahoogroups.com
> > Sent: Friday, April 02, 2010 1:02 PM
> > Subject: Re: [c-prog] MultiThreading !?!
> >
> >
> >
> > Crux of the discussion ....Thread is needed where one thinks that a
> > aysnc-operation is needed .
> > In stone-age one used 'interrupts' for this. Right ?. These days one
> > uses a 'watcher-thread' .......
> >
> > Cheers.
> > Knowledge Seeker
> >
> > On 4/2/2010 10:21 PM, Gerald Dunn wrote:
> > > A socket was just a 'real-world' example.
> > >
> > > ----- Original Message -----
> > > From: John Gaughan
> > > To: c-prog@yahoogroups.com
> > > Sent: Friday, April 02, 2010 12:20 PM
> > > Subject: Re: [c-prog] MultiThreading !?!
> > >
> > >
> > >
> > > On 4/2/2010 9:45 AM, Gerald Dunn wrote:
> > > > Consider an application that waits for an incoming socket connection. 
> > > > Typically the function call to accept the connection blocks. Just in 
> > > > case 'blocks' isn't clear, it basically means the function will not 
> > > > return until some condition is met. In this case the function would not 
> > > > return until an incoming connection is established or until some other 
> > > > thread closed the server socket, both of which could be indefinite. If 
> > > > your application just had the one thread to accept the connection then 
> > > > you could never do anything else. Now introduce another thread. This 
> > > > new thread could close the server socket after a timeout or as the 
> > > > result of a button press (physical or graphical), etc.
> > > >
> > >
> > > It doesn't even have to be a socket communication. Any asynchronous
> > > communication with a separate process may be able to benefit from this
> > > design.
> > >
> > > I have written hardware drivers that used producer-consumer with
> > > multiple threads on a single system, no sockets involved. But I do agree
> > > that a good example would be a web server, which does use sockets and
> > > multiple computers (clients).
> > >
> > > --
> > > John Gaughan
> > > http://www.johngaughan.net/
> > >
> > >
> > >
> > >
> > >
> > > [Non-text portions of this message have been removed]
> > >
> > >
> > >
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
> >
> > 
> 
> 



------------------------------------

To unsubscribe, send a blank message to 
<mailto:c-prog-unsubscr...@yahoogroups.com>.Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/c-prog/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/c-prog/join
    (Yahoo! ID required)

<*> To change settings via email:
    c-prog-dig...@yahoogroups.com 
    c-prog-fullfeatu...@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
    c-prog-unsubscr...@yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/

Reply via email to