[M3commit] CVS Update: cm3

Jay Krell jkrell at elego.de
Tue Apr 21 13:02:12 CEST 2009


CVSROOT:	/usr/cvs
Changes by:	jkrell at birch.	09/04/21 13:02:12

Modified files:
	cm3/m3-libs/m3core/src/thread/WIN32/: ThreadWin32.m3 m3makefile 
Added files:
	cm3/m3-libs/m3core/src/thread/WIN32/: ThreadWin32.i3 
	                                      ThreadWin32C.c 

Log message:
	Experimentally transform like pthread and move the criticalsections and threadlocal
	to C and wrap thinly.
	
	This hides from Modula-3 the need to know the size of a critical section, though
	this seems like a smaller problem on the single vendor few kernel Win32 (NT, CE,
	and NT and 9x are binary compatible) than
	the multi vendor many kernel Posix. There are other cloned header dependencies here
	not factored into C (SuspendThread, ResumeThread, MEMORY_BASIC_INFO, etc.)
	
	Note that Modula-3 does and long has done leak its criticalsections and threadlocals.
	We should probably address that.
	More generally there should perhaps be module destructors, though like Win32
	it helps to know the ExitProcess() vs. FreeLibrary case. In ExitProcess()
	it is a waste of time and to try to cleanup whereas in FreeLibrary is a is good idea
	to cleanup.
	
	EnterCriticalSection(foo) => EnterCriticalSection_foo()
	likewise for
	LeaveCriticalSection
	TlsGetValue
	TlsSetValue
	InitializeCriticalSection and TlsAlloc bundled into InitC.
	Logic for TlsGetValue_foo() before TlsAlloc_foo() buried in TlsGetValue_foo().
	
	In future, in Vista-specific code, besides condition variables, we can use __declspec(thread) or such.
	(Posix/gcc platforms should use __thread..and more generally, no matter the deficient underyling
	platforms, Modula-3 should consider <*threadlocal*>)




More information about the M3commit mailing list