⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changelog

📁 电驴下载工具eMule0.47aVeryCD的源代码,可作分析测试也可用于P2P软件的开发研究.
💻
📖 第 1 页 / 共 5 页
字号:
	tests/barrier5.c which is fairly rigorous. There is still
	a non-optimal work-around for a race condition between
	the barrier breeched event signal and event wait. Basically
	the last (signalling) thread to hit the barrier yields
	to allow any other threads, which may have lost the race,
	to complete.

2001-07-07  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* barrier.c: Changed synchronisation mechanism to a
	Win32 manual reset Event and use PulseEvent to signal
	waiting threads. If the implementation continued to use
	a semaphore it would require a second semaphore and
	some management to use them alternately as barriers. A
	single semaphore allows threads to cascade from one barrier
	through the next, leaving some threads blocked at the first.
	* implement.h (pthread_barrier_t_): As per above.
	* general: Made a number of other routines inlinable.

2001-07-07  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* spin.c: Revamped and working; included static initialiser.
	Now beta level.
	* barrier.c: Likewise.
	* condvar.c: Macro constant change; inline auto init routine.
	* mutex.c: Likewise.
	* rwlock.c: Likewise.
	* private.c: Add support for spinlock initialiser.
	* global.c: Likewise.
	* implement.h: Likewise.
	* pthread.h (PTHREAD_SPINLOCK_INITIALIZER): Fix typo.

2001-07-05  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* barrier.c: Remove static initialisation - irrelevent
	for this object.
	* pthread.h (PTHREAD_BARRIER_INITIALIZER): Removed.
	* rwlock.c (pthread_rwlock_wrlock): This routine is
	not a cancelation point - disable deferred
	cancelation around call to pthread_cond_wait().

2001-07-05  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* spin.c: New module implementing spin locks.
	* barrier.c: New module implementing barriers.
	* pthread.h (_POSIX_SPIN_LOCKS): defined.
	(_POSIX_BARRIERS): Defined.
	(pthread_spin_*): Defined.
	(pthread_barrier*): Defined.
	(PTHREAD_BARRIER_SERIAL_THREAD): Defined.
	* implement.h (pthread_spinlock_t_): Defined.
	(pthread_barrier_t_): Defined.
	(pthread_barrierattr_t_): Defined.

	* mutex.c (pthread_mutex_lock): Return with the error
	if an auto-initialiser initialisation fails.

	* nonportable.c (pthread_getprocessors_np): New; gets the
	number of available processors for the current process.

2001-07-03  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* pthread.h (_POSIX_READER_WRITER_LOCKS): Define it
	if not already defined.

2001-07-01  Alexander Terekhov <TEREKHOV at de.ibm.com>

	* condvar.c: Fixed lost signal bug reported by Timur Aydin
	(taydin@snet.net).
	[RPJ (me) didn't translate the original algorithm
	correctly.]
	* semaphore.c: Added sem_post_multiple; this is a useful
	routine, but it doesn't appear to be standard. For now it's
	not an exported function.
	
2001-06-25  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* create.c (pthread_create): Add priority inheritance
	attributes.
	* mutex.c (pthread_mutex_lock): Remove some overhead for
	PTHREAD_MUTEX_NORMAL mutex types. Specifically, avoid
	calling pthread_self() and pthread_equal() to check/set
	the mutex owner. Introduce a new pseudo owner for this
	type. Test results suggest increases in speed of up to
	90% for non-blocking locks.
	This is the default type of mutex used internally by other
	synchronising objects, ie. condition variables and
	read-write locks. The test rwlock7.c shows about a
	30-35% speed increase over snapshot 2001-06-06. The
	price of this is that the application developer
	must ensure correct behaviour, or explicitly set the
	mutex to a safer type such as PTHREAD_MUTEX_ERRORCHECK.
	For example, PTHREAD_MUTEX_NORMAL (or PTHREAD_MUTEX_DEFAULT)
	type mutexes will not return an error if a thread which is not
	the owner calls pthread_mutex_unlock. The call will succeed
	in unlocking the mutex if it is currently locked, but a
	subsequent unlock by the true owner will then fail with EPERM.
	This is however consistent with some other implementations.
	(pthread_mutex_unlock): Likewise.
	(pthread_mutex_trylock): Likewise.
	(pthread_mutex_destroy): Likewise.
	* attr.c (pthread_attr_init): PTHREAD_EXPLICIT_SCHED is the
	default inheritance attribute; THREAD_PRIORITY_NORMAL is
	the default priority for new threads.
	* sched.c (pthread_attr_setschedpolicy): Added routine.
	(pthread_attr_getschedpolicy): Added routine.
	(pthread_attr_setinheritsched): Added routine.
	(pthread_attr_getinheritsched): Added routine.
	* pthread.h (sched_rr_set_interval): Added as a macro;
	returns -1 with errno set to ENOSYS.

2001-06-23  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	*sched.c (pthread_attr_setschedparam): Add priority range
	check.
	(sched_setscheduler): New function; checks for a valid
	pid and policy; checks for permission to set information
	in the target process; expects pid to be a Win32 process ID,
	not a process handle; the only scheduler policy allowed is
	SCHED_OTHER.
	(sched_getscheduler): Likewise, but checks for permission
	to query.
	* pthread.h (SCHED_*): Moved to sched.h as defined in the
	POSIX standard.
	* sched.h (SCHED_*): Moved from pthread.h.
	(pid_t): Defined if necessary.
	(sched_setscheduler): Defined.
	(sched_getscheduler): Defined.
	* pthread.def (sched_setscheduler): Exported.
	(sched_getscheduler): Likewise.

2001-06-23  Ralf Brese <Ralf.Brese at pdb4.siemens.de>

	* create.c (pthread_create): Set thread priority from
	thread attributes.

2001-06-18  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* Made organisational-only changes to UWIN additions.
	* dll.c (dllMain): Moved UWIN process attach code
	to pthread_win32_process_attach_np(); moved
	instance of pthread_count to global.c.
	* global.c (pthread_count): Moved from dll.c.
	* nonportable.c (pthread_win32_process_attach_np):
	Moved _UWIN code to here from dll.c.
	* implement.h (pthread_count): Define extern int.
	* create.c (pthread_count): Remove extern int.
	* private.c (pthread_count): Likewise.
	* exit.c (pthread_count): Likewise.

2001-06-18  David Korn <dgk at research.att.com>

	* dll.c: Added changes necessary to work with UWIN.
	* create.c: Likewise.
	* pthread.h: Likewise.
	* misc.c: Likewise.
	* exit.c: Likewise.
	* private.c: Likewise.
	* implement.h: Likewise.
	There is some room at the start of struct pthread_t_
	to implement the signal semantics in UWIN's posix.dll
	although this is not yet complete.
	* Nmakefile: Compatible with UWIN's Nmake utility.
	* Nmakefile.tests: Likewise - for running the tests.

2001-06-08  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* semaphore.h (sem_t): Fixed for compile and test.
	* implement.h (sem_t_): Likewise.
	* semaphore.c: Likewise.
	* private.c (ptw32_sem_timedwait): Updated to use new
	opaque sem_t.

2001-06-06  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* semaphore.h (sem_t): Is now an opaque pointer;
	moved actual definition to implement.h.
	* implement.h (sem_t_): Move here from semaphore.h;
	was the definition of sem_t.
	* semaphore.c: Wherever necessary, changed use of sem
	from that of a pointer to a pointer-pointer; added
	extra checks for a valid sem_t; NULL sem_t when
	it is destroyed; added extra checks when creating
	and destroying sem_t elements in the NEED_SEM
	code branches; changed from using a pthread_mutex_t
	((*sem)->mutex) to CRITICAL_SECTION ((*sem)->sem_lock_cs)
	in NEED_SEM branches for access serialisation.

2001-06-06  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* mutex.c (pthread_mutexattr_init): Remove 
	ptw32_mutex_default_kind.
	
2001-06-05  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* nonportable.c (pthread_mutex_setdefaultkind_np):
	Remove - should not have been included in the first place.
	(pthread_mutex_getdefaultkind_np): Likewise.
	* global.c (ptw32_mutex_default_kind): Likewise.
	* mutex.c (pthread_mutex_init): Remove use of
	ptw32_mutex_default_kind.
	* pthread.h (pthread_mutex_setdefaultkind_np): Likewise.
	(pthread_mutex_getdefaultkind_np): Likewise.
	* pthread.def (pthread_mutexattr_setkind_np): Added.
	(pthread_mutexattr_getkind_np): Likewise.

	* README: Many changes that should have gone in before
	the last snapshot.
	* README.NONPORTABLE: New - referred to by ANNOUNCE
	but never created; documents the non-portable routines
	included in the library - moved from README with new
	routines added.
	* ANNOUNCE (pthread_mutexattr_setkind_np): Added to
	compliance list.
	(pthread_mutexattr_getkind_np): Likewise.

2001-06-04  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* condvar.c: Add original description of the algorithm as
	developed by Terekhov and Thomas, plus reference to
	README.CV.

2001-06-03  Alexander Terekhov <TEREKHOV at de.ibm.com>, Louis Thomas <lthomas at arbitrade.com>

	* condvar.c (pthread_cond_init): Completely revamped.
	(pthread_cond_destroy): Likewise.
	(ptw32_cond_wait_cleanup): Likewise.
	(ptw32_cond_timedwait): Likewise.
	(ptw32_cond_unblock): New general signaling routine.
	(pthread_cond_signal): Now calls ptw32_cond_unblock.
	(pthread_cond_broadcast): Likewise.
	* implement.h (pthread_cond_t_): Revamped.
	* README.CV: New; explanation of the above changes.

2001-05-30  Ross Johnson  <rpj at setup1.ise.canberra.edu.au>

	* pthread.h (rand_r): Fake using _seed argument to quell
	compiler warning (compiler should optimise this away later).

	* GNUmakefile (OPT): Leave symbolic information out of the library
	and increase optimisation level - for smaller faster prebuilt
	dlls.
	
2001-05-29  Milan Gardian <Milan.Gardian at LEIBINGER.com>

	* Makefile: fix typo.
	* pthreads.h: Fix problems with stdcall/cdecl conventions, in particular
	remove the need for PT_STDCALL everywhere; remove warning supression.
	* (errno): Fix the longstanding "inconsistent dll linkage" problem
	with errno; now also works with /MD debugging libs - 
	warnings emerged when compiling pthreads library with /MD (or /MDd)
	compiler switch, instead of /MT (or /MTd) (i.e. when compiling pthreads
	using Multithreaded DLL CRT instead of Multithreaded statically linked
	CRT).
	* create.c (pthread_create): Likewise; fix typo.
	* private.c (ptw32_threadStart): Eliminate use of terminate() which doesn't
	throw exceptions.
	* Remove unnecessary #includes from a number of modules -
	[I had to #include malloc.h in implement.h for gcc - rpj].

2001-05-29  Thomas Pfaff <tpfaff at gmx.net>

	* pthread.h (PTHREAD_MUTEX_DEFAULT): New; equivalent to
	PTHREAD_MUTEX_DEFAULT_NP.
	* (PTHREAD_MUTEX_NORMAL): Similarly.
	* (PTHREAD_MUTEX_ERRORCHECK): Similarly.
	* (PTHREAD_MUTEX_RECURSIVE): Similarly.
	* (pthread_mutex_setdefaultkind_np): New; Linux compatibility stub
	for pthread_mutexattr_settype.
	* (pthread_mutexattr_getkind_np): New; Linux compatibility stub
	for pthread_mutexattr_gettype.
	* mutex.c (pthread_mutexattr_settype): New; allow
	the following types of mutex:
	  PTHREAD_MUTEX_DEFAULT_NP
	  PTHREAD_MUTEX_NORMAL_NP
	  PTHREAD_MUTEX_ERRORCHECK_NP
	  PTHREAD_MUTEX_RECURSIVE_NP
	* Note that PTHREAD_MUTEX_DEFAULT is equivalent to
	PTHREAD_MUTEX_NORMAL - ie. mutexes should no longer
	be recursive by default, and a thread will deadlock if it
	tries to relock a mutex it already owns. This is inline with
	other pthreads implementations.
	* (pthread_mutex_lock): Process the lock request
	according to the mutex type.
	* (pthread_mutex_init): Eliminate use of Win32 mutexes as the
	basis of POSIX mutexes - instead, a combination of one critical section
	and one semaphore are used in conjunction with Win32 Interlocked* routines.
	* (pthread_mutex_destroy): Likewise.
	* (pthread_mutex_lock): Likewise.
	* (pthread_mutex_trylock): Likewise.
	* (pthread_mutex_unlock): Likewise.
	* Use longjmp/setjmp to implement cancelation when building the library
	using a C compiler which doesn't support exceptions, e.g. gcc -x c (note
	that gcc -x c++ uses exceptions).
	* Also fixed some of the same typos and eliminated PT_STDCALL as
	Milan Gardian's patches above.

2001-02-07  Alexander Terekhov <TEREKHOV at de.ibm.com>

	* rwlock.c: Revamped.
	* implement.h (pthread_rwlock_t_): Redefined.
	This implementation does not have reader/writer starvation problem.
	Rwlock attempts to behave more like a normal mutex with
	races and scheduling policy determining who is more important;
	It also supports recursive locking,
	has less synchronization overhead (no broadcasts at all,
	readers are not blocked on any condition variable) and seem to
	be faster than the current implementation [W98 appears to be
	approximately 15 percent faster at least - on top of speed increase
	from Thomas Pfaff's changes to mu

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -