From ad@dual.solvo.spb.su  Mon Jan 31 15:25:14 2000
Received: from dual.solvo.spb.su (dual.solvo.spb.su [195.201.44.111])
	by swi.psy.uva.nl (8.9.3/8.9.3) with ESMTP id PAA18149
	for <prolog@swi.psy.uva.nl>; Mon, 31 Jan 2000 15:25:07 +0100 (MET)
Received: from dual.loc.solvo.spb.su by dual.solvo.spb.su with esmtp
	(Smail3.2.0.103 #4) id m12FHlI-001VEhC; Mon, 31 Jan 2000 17:25:04 +0300 (MSK)
Date: Mon, 31 Jan 2000 17:25:04 +0300 (MSK)
From: Andrey Diatchkov <ad@dual.solvo.spb.su>
To: prolog@swi.psy.uva.nl
Subject: Thread problem in 3.3.0
Message-ID: <Pine.LNX.4.10.10001311652470.13486-100000@dual.solvo.spb.su>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

I've written simple example of thread and run it on RedHat 6.1, 
SwiProlog 3.3.0#10. I've got strange result.

There are two thread : main and logger. Main-thread send message to
logger-thread.

main :-
        thread_create(logger,LoggerId,[]),
        main_cycle(LoggerId).

main_cycle(LoggerId) :-
        thread_send_message(LoggerId," first"),
        thread_send_message(LoggerId," second"),
        !,
        main_cycle(LoggerId).

logger :-
        thread_get_message(Info),
        writef(Info),nl,
        logger.

It's right. Result:

 first
 second
 first
 second
 . . .

But if i add sleep() in main_cycle then second message don't
printing (see below):

main_cycle(LoggerId) :-
        thread_send_message(LoggerId," first"),
        thread_send_message(LoggerId," second"),
	sleep(0.1),
        !,
        main_cycle(LoggerId).
Result:
 first
 first
 first
 first
 . . .

Next experiment:

main_cycle(LoggerId) :-
        thread_send_message(LoggerId," first"),
	sleep(0.1),
        thread_send_message(LoggerId," second"),
        sleep(0.1),
        !,
        main_cycle(LoggerId).

It's working right too.

Is it bug?

Thank you.

