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

📄 readme.nonportable

📁 pthread source code,you can compile directly
💻 NONPORTABLE
字号:
This file documents non-portable functions and other issues.Non-portable functions included in pthreads-win32-------------------------------------------------BOOLpthread_win32_test_features_np(int mask)	This routine allows an application to check which	run-time auto-detected features are available within	the library.	The possible features are:		PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE			Return TRUE if the native version of			InterlockedCompareExchange() is being used.		PTW32_ALERTABLE_ASYNC_CANCEL			Return TRUE is the QueueUserAPCEx package			QUSEREX.DLL is available and the AlertDrv.sys			driver is loaded into Windows, providing			alertable (pre-emptive) asyncronous threads			cancelation. If this feature returns FALSE			then the default async cancel scheme is in			use, which cannot cancel blocked threads.	Features may be Or'ed into the mask parameter, in which case	the routine returns TRUE if any of the Or'ed features would	return TRUE. At this stage it doesn't make sense to Or features	but it may some day.void *pthread_timechange_handler_np(void *)        To improve tolerance against operator or time service        initiated system clock changes.        This routine can be called by an application when it        receives a WM_TIMECHANGE message from the system. At        present it broadcasts all condition variables so that        waiting threads can wake up and re-evaluate their        conditions and restart their timed waits if required.        It has the same return type and argument type as a        thread routine so that it may be called directly        through pthread_create(), i.e. as a separate thread.        Parameters        Although a parameter must be supplied, it is ignored.        The value NULL can be used.        Return values        It can return an error EAGAIN to indicate that not        all condition variables were broadcast for some reason.        Otherwise, 0 is returned.        If run as a thread, the return value is returned        through pthread_join().        The return value should be cast to an integer.HANDLEpthread_getw32threadhandle_np(pthread_t thread);	Returns the win32 thread handle that the POSIX	thread "thread" is running as.	Applications can use the win32 handle to set	win32 specific attributes of the thread.intpthread_mutexattr_setkind_np(pthread_mutexattr_t * attr, int kind)intpthread_mutexattr_getkind_np(pthread_mutexattr_t * attr, int *kind)        These two routines are included for Linux compatibility        and are direct equivalents to the standard routines                pthread_mutexattr_settype                pthread_mutexattr_gettype        pthread_mutexattr_setkind_np accepts the following        mutex kinds:                PTHREAD_MUTEX_FAST_NP                PTHREAD_MUTEX_ERRORCHECK_NP                PTHREAD_MUTEX_RECURSIVE_NP        These are really just equivalent to (respectively):                PTHREAD_MUTEX_NORMAL                PTHREAD_MUTEX_ERRORCHECK                PTHREAD_MUTEX_RECURSIVEintpthread_delay_np (const struct timespec *interval);        This routine causes a thread to delay execution for a specific period of time.        This period ends at the current time plus the specified interval. The routine        will not return before the end of the period is reached, but may return an        arbitrary amount of time after the period has gone by. This can be due to        system load, thread priorities, and system timer granularity.        Specifying an interval of zero (0) seconds and zero (0) nanoseconds is        allowed and can be used to force the thread to give up the processor or to        deliver a pending cancelation request.        This routine is a cancelation point.        The timespec structure contains the following two fields:                tv_sec is an integer number of seconds.                tv_nsec is an integer number of nanoseconds.         Return Values        If an error condition occurs, this routine returns an integer value        indicating the type of error. Possible return values are as follows:        0          Successful completion.         [EINVAL]   The value specified by interval is invalid. intpthread_num_processors_np        This routine (found on HPUX systems) returns the number of processors        in the system. This implementation actually returns the number of        processors available to the process, which can be a lower number        than the system's number, depending on the process's affinity mask.BOOLpthread_win32_process_attach_np (void);BOOLpthread_win32_process_detach_np (void);BOOLpthread_win32_thread_attach_np (void);BOOLpthread_win32_thread_detach_np (void);	These functions contain the code normally run via dllMain	when the library is used as a dll but which need to be	called explicitly by an application when the library	is statically linked.	You will need to call pthread_win32_process_attach_np() before	you can call any pthread routines when statically linking.	You should call pthread_win32_process_detach_np() before	exiting your application to clean up.	pthread_win32_thread_attach_np() is currently a no-op, but	pthread_win32_thread_detach_np() is needed to clean up	the implicit pthread handle that is allocated to a Win32 thread if	it calls certain pthreads routines. Call this routine when the	Win32 thread exits.	These functions invariably return TRUE except for	pthread_win32_process_attach_np() which will return FALSE	if pthreads-win32 initialisation fails.intpthreadCancelableWait (HANDLE waitHandle);intpthreadCancelableTimedWait (HANDLE waitHandle, DWORD timeout);	These two functions provide hooks into the pthread_cancel	mechanism that will allow you to wait on a Windows handle	and make it a cancellation point. Both functions block	until either the given w32 handle is signaled, or	pthread_cancel has been called. It is implemented using	WaitForMultipleObjects on 'waitHandle' and a manually	reset w32 event used to implement pthread_cancel.Non-portable issues-------------------Thread priority	POSIX defines a single contiguous range of numbers that determine a	thread's priority. Win32 defines priority classes and priority	levels relative to these classes. Classes are simply priority base	levels that the defined priority levels are relative to such that,	changing a process's priority class will change the priority of all	of it's threads, while the threads retain the same relativity to each	other.	A Win32 system defines a single contiguous monotonic range of values	that define system priority levels, just like POSIX. However, Win32	restricts individual threads to a subset of this range on a	per-process basis.	The following table shows the base priority levels for combinations	of priority class and priority value in Win32.		 Process Priority Class               Thread Priority Level	 -----------------------------------------------------------------	 1 IDLE_PRIORITY_CLASS                THREAD_PRIORITY_IDLE	 1 BELOW_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_IDLE	 1 NORMAL_PRIORITY_CLASS              THREAD_PRIORITY_IDLE	 1 ABOVE_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_IDLE	 1 HIGH_PRIORITY_CLASS                THREAD_PRIORITY_IDLE	 2 IDLE_PRIORITY_CLASS                THREAD_PRIORITY_LOWEST	 3 IDLE_PRIORITY_CLASS                THREAD_PRIORITY_BELOW_NORMAL	 4 IDLE_PRIORITY_CLASS                THREAD_PRIORITY_NORMAL	 4 BELOW_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_LOWEST	 5 IDLE_PRIORITY_CLASS                THREAD_PRIORITY_ABOVE_NORMAL	 5 BELOW_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_BELOW_NORMAL	 5 Background NORMAL_PRIORITY_CLASS   THREAD_PRIORITY_LOWEST	 6 IDLE_PRIORITY_CLASS                THREAD_PRIORITY_HIGHEST	 6 BELOW_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_NORMAL	 6 Background NORMAL_PRIORITY_CLASS   THREAD_PRIORITY_BELOW_NORMAL	 7 BELOW_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_ABOVE_NORMAL	 7 Background NORMAL_PRIORITY_CLASS   THREAD_PRIORITY_NORMAL	 7 Foreground NORMAL_PRIORITY_CLASS   THREAD_PRIORITY_LOWEST 	 8 BELOW_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_HIGHEST	 8 NORMAL_PRIORITY_CLASS              THREAD_PRIORITY_ABOVE_NORMAL	 8 Foreground NORMAL_PRIORITY_CLASS   THREAD_PRIORITY_BELOW_NORMAL	 8 ABOVE_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_LOWEST	 9 NORMAL_PRIORITY_CLASS              THREAD_PRIORITY_HIGHEST	 9 Foreground NORMAL_PRIORITY_CLASS   THREAD_PRIORITY_NORMAL	 9 ABOVE_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_BELOW_NORMAL	10 Foreground NORMAL_PRIORITY_CLASS   THREAD_PRIORITY_ABOVE_NORMAL	10 ABOVE_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_NORMAL	11 Foreground NORMAL_PRIORITY_CLASS   THREAD_PRIORITY_HIGHEST	11 ABOVE_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_ABOVE_NORMAL	11 HIGH_PRIORITY_CLASS                THREAD_PRIORITY_LOWEST	12 ABOVE_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_HIGHEST	12 HIGH_PRIORITY_CLASS                THREAD_PRIORITY_BELOW_NORMAL	13 HIGH_PRIORITY_CLASS                THREAD_PRIORITY_NORMAL	14 HIGH_PRIORITY_CLASS                THREAD_PRIORITY_ABOVE_NORMAL	15 HIGH_PRIORITY_CLASS                THREAD_PRIORITY_HIGHEST	15 HIGH_PRIORITY_CLASS                THREAD_PRIORITY_TIME_CRITICAL	15 IDLE_PRIORITY_CLASS                THREAD_PRIORITY_TIME_CRITICAL	15 BELOW_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_TIME_CRITICAL	15 NORMAL_PRIORITY_CLASS              THREAD_PRIORITY_TIME_CRITICAL	15 ABOVE_NORMAL_PRIORITY_CLASS        THREAD_PRIORITY_TIME_CRITICAL	16 REALTIME_PRIORITY_CLASS            THREAD_PRIORITY_IDLE	17 REALTIME_PRIORITY_CLASS            -7	18 REALTIME_PRIORITY_CLASS            -6	19 REALTIME_PRIORITY_CLASS            -5	20 REALTIME_PRIORITY_CLASS            -4	21 REALTIME_PRIORITY_CLASS            -3	22 REALTIME_PRIORITY_CLASS            THREAD_PRIORITY_LOWEST	23 REALTIME_PRIORITY_CLASS            THREAD_PRIORITY_BELOW_NORMAL	24 REALTIME_PRIORITY_CLASS            THREAD_PRIORITY_NORMAL	25 REALTIME_PRIORITY_CLASS            THREAD_PRIORITY_ABOVE_NORMAL	26 REALTIME_PRIORITY_CLASS            THREAD_PRIORITY_HIGHEST	27 REALTIME_PRIORITY_CLASS             3	28 REALTIME_PRIORITY_CLASS             4	29 REALTIME_PRIORITY_CLASS             5	30 REALTIME_PRIORITY_CLASS             6	31 REALTIME_PRIORITY_CLASS            THREAD_PRIORITY_TIME_CRITICAL		Windows NT:  Values -7, -6, -5, -4, -3, 3, 4, 5, and 6 are not supported.	As you can see, the real priority levels available to any individual	Win32 thread are non-contiguous.	An application using pthreads-win32 should not make assumptions about	the numbers used to represent thread priority levels, except that they	are monotonic between the values returned by sched_get_priority_min()	and sched_get_priority_max(). E.g. Windows 95, 98, NT, 2000, XP make	available a non-contiguous range of numbers between -15 and 15, while	at least one version of WinCE (3.0) defines the minimum priority	(THREAD_PRIORITY_LOWEST) as 5, and the maximum priority	(THREAD_PRIORITY_HIGHEST) as 1.	Internally, pthreads-win32 maps any priority levels between	THREAD_PRIORITY_IDLE and THREAD_PRIORITY_LOWEST to THREAD_PRIORITY_LOWEST,	or between THREAD_PRIORITY_TIME_CRITICAL and THREAD_PRIORITY_HIGHEST to	THREAD_PRIORITY_HIGHEST. Currently, this also applies to	REALTIME_PRIORITY_CLASSi even if levels -7, -6, -5, -4, -3, 3, 4, 5, and 6	are supported.	If it wishes, a Win32 application using pthreads-win32 can use the Win32	defined priority macros THREAD_PRIORITY_IDLE through	THREAD_PRIORITY_TIME_CRITICAL.

⌨️ 快捷键说明

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