Re: Threads Design. A Win32 perspective.

2004-01-07 Thread Dan Sugalski
At 23:10 -0500 1/5/04, Gordon Henriksen wrote: Data corruption unacceptable? I disagree. I get the feeling people just aren't reading what's been written, or aren't keeping it all straight. *User* and *program* data integrity is not our problem -- not only are we not guaranteeing that, I'd be fi

Re: Threads Design. A Win32 perspective.

2004-01-07 Thread Elizabeth Mattijsen
At 23:10 -0500 1/5/04, Gordon Henriksen wrote: Data corruption unacceptable? I disagree. It depends on the contract put forward by the language in question. Notably, Perl makes no such guarantees thus far, being as how it doesn't (any longer) run in a traditional threaded model. Successfully thr

RE: Threads Design. A Win32 perspective.

2004-01-06 Thread Garrett Goebel
Gordon Henriksen wrote: > Dan Sugalski wrote: > > > > An interpreter *must* lock any shared data structure, > > including PMCs, when accessing them. Otherwise they may > > be in an inconsistent state when being accessed, which will > > lead to data corruption or process crashing, which is > > una

Re: Threads Design. A Win32 perspective.

2004-01-06 Thread Gordon Henriksen
On Sunday, January 4, 2004, at 01:43 , Dan Sugalski wrote: At 11:59 PM -0500 1/3/04, Gordon Henriksen wrote: On Saturday, January 3, 2004, at 04:32 , Nigel Sandever wrote: Transparent interlocking of VHLL fat structures performed automatically by the VM itself. No need for :shared or lock(). Com

Re: Threads Design. A Win32 perspective.

2004-01-06 Thread Gordon Henriksen
On Sunday, January 4, 2004, at 03:17 , Jeff Clites wrote: On Jan 3, 2004, at 8:59 PM, Gordon Henriksen wrote: On Saturday, January 3, 2004, at 04:32 , Nigel Sandever wrote: Transparent interlocking of VHLL fat structures performed automatically by the VM itself. No need for :shared or lock(). C

Re: Threads Design. A Win32 perspective.

2004-01-05 Thread Dan Sugalski
At 4:03 PM -0800 1/4/04, Damien Neil wrote: It's my understanding that Parrot has chosen to take the path of using many mutable data structures at the VM level; unfortunately, this is pretty much incompatible with a fast or elegant threading model. Yep, generally true. The choice was made on purpos

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Damien Neil
On Sun, Jan 04, 2004 at 12:17:33PM -0800, Jeff Clites wrote: > What are these standard techniques? The JVM spec does seem to guarantee > that even in the absence of proper locking by user code, things won't > go completely haywire, but I can't figure out how this is possible > without actual loc

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Dan Sugalski
At 9:27 AM +1300 1/5/04, Sam Vilain wrote: On Sat, 03 Jan 2004 20:51, Luke Palmer wrote; > Parrot is platform-independent, but that doesn't mean we can't > take advantage of platform-specific instructions to make it faster > on certain machines. Indeed, this is precisely what JIT is. > B

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Dan Sugalski
At 3:17 PM -0500 1/4/04, Uri Guttman wrote: > "DS" == Dan Sugalski <[EMAIL PROTECTED]> writes: DS> And don't forget the libraries that are picky about which thread calls DS> into them -- there are some that require that the thread that created DS> the handle for the library be the threa

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Sam Vilain
On Sat, 03 Jan 2004 20:51, Luke Palmer wrote; > Parrot is platform-independent, but that doesn't mean we can't > take advantage of platform-specific instructions to make it faster > on certain machines. Indeed, this is precisely what JIT is. > But a lock on every PMC is still pretty hea

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Uri Guttman
> "DS" == Dan Sugalski <[EMAIL PROTECTED]> writes: DS> And don't forget the libraries that are picky about which thread calls DS> into them -- there are some that require that the thread that created DS> the handle for the library be the thread that calls into the library DS> with that

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Jeff Clites
On Jan 3, 2004, at 8:59 PM, Gordon Henriksen wrote: On Saturday, January 3, 2004, at 04:32 , Nigel Sandever wrote: Transparent interlocking of VHLL fat structures performed automatically by the VM itself. No need for :shared or lock(). Completely specious, and repeatedly proven unwise. Shouldn't

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Dan Sugalski
At 12:05 PM -0800 1/4/04, Jeff Clites wrote: On Jan 4, 2004, at 5:47 AM, Leopold Toetsch wrote: Elizabeth Mattijsen <[EMAIL PROTECTED]> wrote: When you use an external library in Perl, such as e.g. libxml, you have Perl data-structures and libxml data-structures. The Perl data-structures contain

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Jeff Clites
On Jan 4, 2004, at 5:47 AM, Leopold Toetsch wrote: Elizabeth Mattijsen <[EMAIL PROTECTED]> wrote: When you use an external library in Perl, such as e.g. libxml, you have Perl data-structures and libxml data-structures. The Perl data-structures contain pointers to the libxml data-structures. In

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Dan Sugalski
At 11:59 PM -0500 1/3/04, Gordon Henriksen wrote: On Saturday, January 3, 2004, at 04:32 , Nigel Sandever wrote: Transparent interlocking of VHLL fat structures performed automatically by the VM itself. No need for :shared or lock(). Completely specious, and repeatedly proven unwise. Shouldn't ev

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Elizabeth Mattijsen
At 14:47 +0100 1/4/04, Leopold Toetsch wrote: Elizabeth Mattijsen <[EMAIL PROTECTED]> wrote: > When you use an external library in Perl, such as e.g. libxml, you have Perl data-structures and libxml data-structures. The Perl > data-structures contain pointers to the libxml data-structures. > I

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Leopold Toetsch
Elizabeth Mattijsen <[EMAIL PROTECTED]> wrote: > When you use an external library in Perl, such as e.g. libxml, you > have Perl data-structures and libxml data-structures. The Perl > data-structures contain pointers to the libxml data-structures. > In comes the starting of an ithread and Perl cl

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Gordon Henriksen
On Saturday, January 3, 2004, at 04:32 , Nigel Sandever wrote: Transparent interlocking of VHLL fat structures performed automatically by the VM itself. No need for :shared or lock(). Completely specious, and repeatedly proven unwise. Shouldn't even be pursued. Atomic guarantees on collections

Re: Threads Design. A Win32 perspective.

2004-01-04 Thread Elizabeth Mattijsen
At 00:49 +0100 1/4/04, Leopold Toetsch wrote: Elizabeth Mattijsen <[EMAIL PROTECTED]> wrote: > Indeed. But as soon as there is something special such as a datastructure external to Perl between threads (which happens automatically "shared" automatically, because Perl doesn't know about > the d

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Jeff Clites
On Jan 3, 2004, at 2:59 PM, Leopold Toetsch wrote: Nigel Sandever <[EMAIL PROTECTED]> wrote: Only duplicating shared data on demand (COW) may work well on systems that support COW in the kernel. No, we are dealing with VM objects and structures here - no kernel is involved for COWed copies of e.g.

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Leopold Toetsch
Nigel Sandever <[EMAIL PROTECTED]> wrote: > On Sat, 3 Jan 2004 21:00:31 +0100, [EMAIL PROTECTED] (Leopold Toetsch) wrote: >> Yep. So if a single interpreter (which is almost a thread state) should >> run two threads, you have to allocate and swap all. > When a kernel level thead is spawned, no dup

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Leopold Toetsch
Elizabeth Mattijsen <[EMAIL PROTECTED]> wrote: > Indeed. But as soon as there is something special such as a > datastructure external to Perl between threads (which happens > automatically "shared" automatically, because Perl doesn't know about > the datastructure, Why is it shared automatically

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Leopold Toetsch
Uri Guttman <[EMAIL PROTECTED]> wrote: > ... this again brings up how we lock so > that GC/alloc will work properly with threads. do we lock a thread pool > but not the thread when we access a shared thingy? This is the major issue, how to continue. Where are shared objects living (alloc) and wher

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Leopold Toetsch
Uri Guttman <[EMAIL PROTECTED]> wrote: > ok, i missed the 'if' there. :) > that could be workable and might be faster. it does mean that locks are > two step as well, user space test/set and fallback to kernel lock. Yep, that is, what the OS provides. I really don't like to reinvent wheels here

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Elizabeth Mattijsen
At 21:11 + 1/3/04, Dave Mitchell wrote: On Sat, Jan 03, 2004 at 08:05:13PM +0100, Elizabeth Mattijsen wrote: > Actually, you can bless a reference to a shared variable, but you can't share a blessed object (the sharing will let you lose the content of the object). I think shared compound da

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Uri Guttman
> "JC" == Jeff Clites <[EMAIL PROTECTED]> writes: JC> On Jan 3, 2004, at 12:26 PM, Uri Guttman wrote: >> that could be workable and might be faster. it does mean that locks >> are two step as well, user space test/set and fallback to kernel >> lock. we can do what nigel said and wrap

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Nigel Sandever
On Sat, 3 Jan 2004 21:00:31 +0100, [EMAIL PROTECTED] (Leopold Toetsch) wrote: > >> That's exactly, what a ParrotInterpreter is: "the entire state for a > >> thread". > > > This is only true if a thread == interpreter. > > If a single interpreter can run 2 threads then that single interpreter > > c

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Jeff Clites
On Jan 3, 2004, at 12:26 PM, Uri Guttman wrote: LT> These are platform specific details. We will use whatever the LT> platform/OS provides. In the source code its a LOCK() UNLOCK() pair. LT> The LOCK() can be any atomic operation and doesn't need to call the LT> kernel, if the lock is aq

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Dave Mitchell
On Sat, Jan 03, 2004 at 08:05:13PM +0100, Elizabeth Mattijsen wrote: > At 18:20 + 1/3/04, Nigel Sandever wrote: > > Sharing data between the threads/interpreters is implemented by > > tieing the two copies of the variables to be shared and each time > > a STORE is performed in one thread, the s

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Uri Guttman
> "EM" == Elizabeth Mattijsen <[EMAIL PROTECTED]> writes: EM> At 12:15 -0500 1/3/04, Uri Guttman wrote: >> > "LT" == Leopold Toetsch <[EMAIL PROTECTED]> writes: LT> These are platform specific details. We will use whatever the LT> platform/OS provides. In the source code its a LOCK

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Uri Guttman
> "LT" == Leopold Toetsch <[EMAIL PROTECTED]> writes: LT> Uri Guttman <[EMAIL PROTECTED]> wrote: >> > "LT" == Leopold Toetsch <[EMAIL PROTECTED]> writes: LT> These are platform specific details. We will use whatever the LT> platform/OS provides. In the source code its a LOCK() UNL

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Uri Guttman
> "EM" == Elizabeth Mattijsen <[EMAIL PROTECTED]> writes: >> ding! ding! ding! you just brought in a cpu specific instruction which >> is not guaranteed to be on any other arch. in fact many have such a >> beast but again, it is not accessible from c. EM> I just _can't_ believe I'm he

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Leopold Toetsch
Nigel Sandever <[EMAIL PROTECTED]> wrote: > On Sat, 3 Jan 2004 11:35:37 +0100, [EMAIL PROTECTED] (Leopold Toetsch) wrote: >> That's exactly, what a ParrotInterpreter is: "the entire state for a >> thread". > This is only true if a thread == interpreter. > If a single interpreter can run 2 threads

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Jeff Clites
On Jan 3, 2004, at 10:08 AM, Elizabeth Mattijsen wrote: At 12:15 -0500 1/3/04, Uri Guttman wrote: > "LT" == Leopold Toetsch <[EMAIL PROTECTED]> writes: LT> These are platform specific details. We will use whatever the LT> platform/OS provides. In the source code its a LOCK() UNLOCK() pai

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Leopold Toetsch
Uri Guttman <[EMAIL PROTECTED]> wrote: > > "LT" == Leopold Toetsch <[EMAIL PROTECTED]> writes: > LT> These are platform specific details. We will use whatever the > LT> platform/OS provides. In the source code its a LOCK() UNLOCK() pair. > LT> The LOCK() can be any atomic operation and does

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Jeff Clites
On Jan 3, 2004, at 11:19 AM, Elizabeth Mattijsen wrote: At 01:48 -0500 1/3/04, Uri Guttman wrote: > "NS" == Nigel Sandever <[EMAIL PROTECTED]> writes: NS> All that is required to protect an object from corruption through NS> concurrent access and state change is to prevent two (or more)

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Elizabeth Mattijsen
I'm trying to be constructive here. Some passages may appear to be blunt. Read at your own risk ;-) At 01:48 -0500 1/3/04, Uri Guttman wrote: > "NS" == Nigel Sandever <[EMAIL PROTECTED]> writes: NS> All that is required to protect an object from corruption through NS> concurrent acce

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Elizabeth Mattijsen
At 18:20 + 1/3/04, Nigel Sandever wrote: Sharing data between the threads/interpreters is implemented by tieing the two copies of the variables to be shared and each time a STORE is performed in one thread, the same STORE has too be performed on the copy of that var held on every other thre

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Nigel Sandever
On Sat, 3 Jan 2004 11:35:37 +0100, [EMAIL PROTECTED] (Leopold Toetsch) wrote: > Nigel Sandever <[EMAIL PROTECTED]> wrote: > > > VIRTUAL MACHINE INTERPRETER > > > At any given point in the running of the interpreter, the VM register > > set, program counter and stack must represent the entire stat

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Elizabeth Mattijsen
At 12:15 -0500 1/3/04, Uri Guttman wrote: > "LT" == Leopold Toetsch <[EMAIL PROTECTED]> writes: LT> These are platform specific details. We will use whatever the LT> platform/OS provides. In the source code its a LOCK() UNLOCK() pair. LT> The LOCK() can be any atomic operation and doesn'

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Uri Guttman
> "LT" == Leopold Toetsch <[EMAIL PROTECTED]> writes: LT> These are platform specific details. We will use whatever the LT> platform/OS provides. In the source code its a LOCK() UNLOCK() pair. LT> The LOCK() can be any atomic operation and doesn't need to call the LT> kernel, if the lo

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Leopold Toetsch
Nigel Sandever <[EMAIL PROTECTED]> wrote: [ Line length adjusted for readability ] > VIRTUAL MACHINE INTERPRETER > At any given point in the running of the interpreter, the VM register > set, program counter and stack must represent the entire state for > that thread. That's exactly, what a Par

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Leopold Toetsch
Nigel Sandever <[EMAIL PROTECTED]> wrote: > On Sat, 03 Jan 2004 01:48:07 -0500, [EMAIL PROTECTED] (Uri Guttman) wrote: >> your ideas make sense but only on redmond/intel which is not the target >> space for parrot. s/not the/by far not the only/ > Maybe it would be possible (for me + others) to

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Luke Palmer
Nigel Sandever writes: > Maybe it would be possible (for me + others) to write the core of a win32 specific, > threaded VM interpreter that would take parrot byte code and run it. Thereby, > utilising all the good stuff that preceeds the VM interpreter, plus probably large > chunks of the parrot V

Re: Threads Design. A Win32 perspective.

2004-01-03 Thread Nigel Sandever
On Sat, 03 Jan 2004 01:48:07 -0500, [EMAIL PROTECTED] (Uri Guttman) wrote: > ding! ding! ding! you just brought in a cpu specific instruction which > is not guaranteed to be on any other arch. in fact many have such a > beast but again, it is not accessible from c. > you can't bring x86 centrism i

Re: Threads Design. A Win32 perspective.

2004-01-02 Thread Uri Guttman
> "NS" == Nigel Sandever <[EMAIL PROTECTED]> writes: NS> ATOMICITY AND CRITICAL SECTIONS UG> that is what i mentioned above, disabling time slicing/ preemption when UG> desired. it is not just a win32 concept. hell, turning off interrupts UG> during interrupt handlers goes way back! r

Re: Threads Design. A Win32 perspective.

2004-01-02 Thread Nigel Sandever
On Thu, 01 Jan 2004 21:32:22 -0500, [EMAIL PROTECTED] (Uri Guttman) wrote: UG> Uri Guttman NS> Nigel Sandever. (Mostly not reproduced here!) NS> REENTRANCY UG> this is true for c level threads but not necessarily true for VM level UG> threads. f the VM is atomic at its operation level and c

Re: Threads Design. A Win32 perspective.

2004-01-01 Thread Uri Guttman
> "NS" == Nigel Sandever <[EMAIL PROTECTED]> writes: NS> REENTRANCY NS> Not only must the VMI be coded in a reentrant fashion, with all state NS> addressed through pointers (references) loaded into it's Virtual NS> register set. All the code underlying it, including syscalls and CRT