Foxit PDF SDK

类 | 类型定义
fx_process.h 文件参考

进程和线程相关定义和类的头文件。 更多...

浏览源代码.

## 类
struct | FX_HTHREAD
| 互斥句柄的类型定义。 更多...
class | CFX_RWLock
| 在非线程模式下，定义为空实现。 更多...
class | CFX_SpinLock
| 在非线程模式下，定义为空实现。 更多...
struct | FX_SYSTEMTIME
| 系统时间结构。 更多...
struct | FX_THREADHANDLER
| 应用程序扩展的线程处理器。 更多...
struct | FXCRT_DATETIMEZONE
| 日期和时间结构。 更多...

## 类型定义
typedef FX_ThreadResult(WINAPI * | FX_CALLBACK_ThreadProxyProc) (FX_CALLBACK_ThreadProc threadProc, FX_LPVOID param)
| 线程代理过程的回调函数。 更多...
进程ID的类型
typedef FX_DWORD | FX_PROCESSID
| 进程ID。

## 函数
时间
void | FX_Time_GetSystemTime (FX_SYSTEMTIME *pSystemTime)
| 获取当前系统日期和时间。 更多...
void | FX_Time_GetLocalTime (FX_SYSTEMTIME *pSystemTime)
| 获取当前本地日期和时间。 更多...
FX_DWORD | FX_Time_GetClock ()
| 获取调用进程已消耗的时钟周期。 更多...
FX_DWORD | FX_Time_Sleep (FX_DWORD dwMilliseconds)
| 延迟当前运行指定的毫秒数。 更多...
void | FXCRT_GetCurrentSystemTime (FXCRT_DATETIMEZONE &dt)
| 获取当前系统日期、时间和时区信息。 更多...
进程管理
void | FX_Process_Initialize ()
| 初始化进程。 更多...
void | FX_Process_Finalize ()
| 结束进程。 更多...
FX_PROCESSID | FX_Process_GetID ()
| 获取当前进程ID 更多...
FX_LPVOID | FX_Process_GetPrivateData (FX_LPVOID key)
| 获取当前进程中的私有数据。 更多...
void | FX_Process_SetPrivateData (FX_LPVOID key, FX_LPVOID data, PD_CALLBACK_FREEDATA callback)
| 设置当前进程中的私有数据。 更多...
void | FX_Process_RemovePrivateData (FX_LPVOID key)
| 移除当前进程中的私有数据。 更多...
CFX_ProcessContext * | FX_Process_GetContext ()
| 获取进程上下文。 更多...
线程处理器
FX_THREADHANDLER * | FX_Thread_GetHandler ()
| 获取当前线程处理器。 更多...
void | FX_Thread_SetHandler (FX_THREADHANDLER *pThreadHandler)
| 设置当前线程处理器。 更多...
线程函数
FX_HTHREAD | FX_Thread_Create (FX_INT32 nPriority, size_t szStack, FX_CALLBACK_ThreadProc threadProc, FX_LPVOID param)
| 创建一个新线程。 更多...
void | FX_Thread_Exit ()
| 退出当前线程。 更多...
FX_HTHREAD | FX_Thread_GetHandle ()
| 获取当前线程句柄。 更多...
void | FX_Thread_Yield ()
| 将处理器让出给另一个线程。 更多...
FX_INT32 | FX_Thread_GetLastError ()
| 获取当前线程中的最后错误代码。 更多...
void | FX_Thread_SetLastError (FX_INT32 nErr)
| 设置当前线程中的最后错误代码。 更多...
FX_LPVOID | FX_Thread_GetPrivateData (FX_LPVOID key)
| 获取当前线程中的私有数据。 更多...
void | FX_Thread_SetPrivateData (FX_LPVOID key, FX_LPVOID data, PD_CALLBACK_FREEDATA callback)
| 设置当前线程中的私有数据。 更多...
void | FX_Thread_RemovePrivateData (FX_LPVOID key)
| 移除当前线程中的私有数据。 更多...
FX_INT32 | FX_Thread_GetPriority (FX_HTHREAD hThread)
| 获取线程优先级。 更多...
void | FX_Thread_SetPriority (FX_HTHREAD hThread, FX_INT32 nPriority)
| 设置线程优先级。 更多...
FX_INT32 | FX_Thread_WaitForSingleThread (FX_HTHREAD hThread)
| 等待单个线程终止。 更多...
FX_INT32 | FX_Thread_WaitForMultipleThreads (const FX_HTHREAD *pThreads, FX_INT32 nCount)
| 等待多个线程终止。 更多...
上下文访问
CFX_ThreadContext * | FX_Thread_GetContext ()
| 获取当前线程上下文。 更多...
CFX_ExceptionContext * | FX_Thread_GetExceptionContext ()
| 获取当前线程异常上下文。 更多...
互斥量
注解 互斥量在单线程模式下或未定义_FPDFAPI_MT_时被禁用， 在此条件下不要调用以下函数。互斥量支持同一线程中的递归调用。
FX_BOOL | FX_Mutex_Initialize (FX_MUTEX *pMutex)
| 初始化一个互斥量。 更多...
void | FX_Mutex_Destroy (FX_MUTEX *pMutex)
| 销毁一个互斥量。 更多...
FX_BOOL | FX_Mutex_TryLock (FX_MUTEX *pMutex)
| 尝试锁定一个互斥量。 更多...
void | FX_Mutex_Lock (FX_MUTEX *pMutex)
| 锁定一个互斥量。 更多...
void | FX_Mutex_Unlock (FX_MUTEX *pMutex)
| 解锁一个互斥量。 更多...
原子计数
注解 原子计数提供了在多个线程之间访问整数值的原子机制。 以下函数在单线程模式下也能工作。
FX_INT32 | FX_Atom_Add32 (volatile FX_INT32 *pAddend, FX_INT32 nIncrement)
| 增加32位整数值。 更多...
FX_INT32 | FX_Atom_Subtract32 (volatile FX_INT32 *pAddend, FX_INT32 nDecrement)
| 减少32位整数值。 更多...
FX_INT64 | FX_Atom_Add64 (volatile FX_INT64 *pAddend, FX_INT64 nIncrement)
| 增加64位整数值。 更多...
FX_INT64 | FX_Atom_Subtract64 (volatile FX_INT64 *pAddend, FX_INT64 nDecrement)
| 减少64位整数值。 更多...

## 线程优先级标志
#define | FX_THREADPRIORITY_Lowest -2
| 最低优先级。
#define | FX_THREADPRIORITY_Lower -1
| 较低优先级。
#define | FX_THREADPRIORITY_Normal 0
| 正常优先级。
#define | FX_THREADPRIORITY_Higher 1
| 较高优先级。
#define | FX_THREADPRIORITY_Highest 2
| 最高优先级。
#define | THREAD_CALL_CONVENTION WINAPI
typedef DWORD | FX_ThreadResult
typedef FX_ThreadResult(WINAPI * | FX_CALLBACK_ThreadProc) (FX_LPVOID param)
| 线程过程的回调函数。 更多...

## 自旋锁
注解 自旋锁在单线程模式下或_FPDFAPI_MT_未定义时被禁用，在此条件下不要调用以下函数。 自旋锁是用于同步访问的轻量级并发机制。 自旋锁不支持同一线程中的递归调用。
#define | FXMT_SPLOCK_THIS
#define | FXMT_SPLOCK_OBJ(lock)
FX_BOOL | FX_SpinLock_Initialize (FX_SPINLOCK *pSpinLock)
| 初始化自旋锁。 更多...
void | FX_SpinLock_Destroy (FX_SPINLOCK *pSpinLock)
| 销毁一个自旋锁。 更多...
FX_BOOL | FX_SpinLock_TryLock (FX_SPINLOCK *pSpinLock)
| 尝试锁定一个自旋锁。 更多...
void | FX_SpinLock_Lock (FX_SPINLOCK *pSpinLock)
| 锁定一个自旋锁。 更多...
void | FX_SpinLock_Unlock (FX_SPINLOCK *pSpinLock)
| 解锁一个自旋锁。 更多...
FX_BOOL | FX_SpinLock_IsLocked (FX_SPINLOCK *pSpinLock)
| 确定指定的自旋锁是否被锁定。 更多...

## 读写锁
注解 读写锁在单线程模式下或_FPDFAPI_MT_未定义时被禁用， 在此条件下不要调用以下函数。
#define | FXMT_RWLOCK_THIS
#define | FXMT_RWLOCK_OBJ(lock, s)
#define | FXMT_RWLOCK_DEFINEOBJ(rwLock, lock, s)
#define | FXMT_RWLOCKOBJECT_DEFINE(rwLockObj)
#define | FXMT_RWLOCKOBJECT_TRYREADLOCK(lockObj)
#define | FXMT_RWLOCKOBJECT_TRYREADLOCK_IF(lockObj)
#define | FXMT_RWLOCKOBJECT_READLOCK(lockObj)
#define | FXMT_RWLOCKOBJECT_READUNLOCK(lockObj)
#define | FXMT_RWLOCKOBJECT_TRYWRITELOCK(lockObj)
#define | FXMT_RWLOCKOBJECT_TRYWRITELOCK_IF(lockObj)
#define | FXMT_RWLOCKOBJECT_WRITELOCK(lockObj)
#define | FXMT_RWLOCKOBJECT_WRITEUNLOCK(lockObj)
FX_BOOL | FX_RWLock_Initialize (FX_RWLOCK *pRWLock)
| 初始化读写锁。 更多...
void | FX_RWLock_Destroy (FX_RWLOCK *pRWLock)
| 销毁一个读写锁。 更多...
FX_BOOL | FX_RWLock_TryReadLock (FX_RWLOCK *pRWLock)
| 尝试锁定以进行共享读取。 更多...
void | FX_RWLock_ReadLock (FX_RWLOCK *pRWLock)
| 锁定以进行共享读取。 更多...
void | FX_RWLock_ReadUnlock (FX_RWLOCK *pRWLock)
| 解锁以进行共享读取。 更多...
FX_BOOL | FX_RWLock_TryWriteLock (FX_RWLOCK *pRWLock)
| 尝试锁定以进行独占写入。 更多...
void | FX_RWLock_WriteLock (FX_RWLOCK *pRWLock)
| 锁定以进行独占写入。 更多...
void | FX_RWLock_WriteUnlock (FX_RWLOCK *pRWLock)
| 解锁以进行独占写入。 更多...

## 详细描述

进程和线程相关定义和类的头文件。

Copyright (C) 2003-2026, Foxit Software Inc.. All Rights Reserved.

http://www.foxitsoftware.com

The following code is copyrighted and is the proprietary of Foxit Software Inc.. It is not allowed to distribute any parts of Foxit PDF SDK to third party or public without permission unless an agreement is signed between Foxit Software Inc. and customers to explicitly grant customers permissions.

## 函数说明

## ◆ FX_Atom_Add32()

FX_INT32 FX_Atom_Add32 | ( | volatile FX_INT32 * | pAddend,
|  | FX_INT32 | nIncrement
| ) |  |

增加32位整数值。

参数

  [in,out] | pAddend | 指向要增加值的32位整数的指针。
  [in] | nIncrement | 要添加到pAddend的增量值。

返回
  新的增量值。

## ◆ FX_Atom_Add64()

FX_INT64 FX_Atom_Add64 | ( | volatile FX_INT64 * | pAddend,
|  | FX_INT64 | nIncrement
| ) |  |

增加64位整数值。

参数

  [in,out] | pAddend | 指向要增加值的64位整数的指针。
  [in] | nIncrement | 要添加到pAddend的增量值。

返回
  新的增量值。

## ◆ FX_Atom_Subtract32()

FX_INT32 FX_Atom_Subtract32 | ( | volatile FX_INT32 * | pAddend,
|  | FX_INT32 | nDecrement
| ) |  |

减少32位整数值。

参数

  [in,out] | pAddend | 指向要减少值的32位整数的指针。
  [in] | nDecrement | 要从pAddend中减去的减量值。

返回
  新的减量值。

## ◆ FX_Atom_Subtract64()

FX_INT64 FX_Atom_Subtract64 | ( | volatile FX_INT64 * | pAddend,
|  | FX_INT64 | nDecrement
| ) |  |

减少64位整数值。

参数

  [in,out] | pAddend | 指向要减少值的64位整数的指针。
  [in] | nDecrement | 要从pAddend中减去的减量值。

返回
  新的减量值。

## ◆ FX_Mutex_Destroy()

void FX_Mutex_Destroy | ( | FX_MUTEX * | pMutex | ) |

销毁一个互斥量。

参数

  [in] | pMutex | 指向要销毁的互斥量的指针。必须不能是NULL指针。

返回
  无。

## ◆ FX_Mutex_Initialize()

FX_BOOL FX_Mutex_Initialize | ( | FX_MUTEX * | pMutex | ) |

初始化一个互斥量。

参数

  [in] | pMutex | 指向需要初始化的互斥量的指针。必须不能是NULL指针。

返回
  true表示成功，false表示失败。

## ◆ FX_Mutex_Lock()

void FX_Mutex_Lock | ( | FX_MUTEX * | pMutex | ) |

锁定一个互斥量。

参数

  [in] | pMutex | 指向互斥量的指针。必须不能是NULL指针。

返回
  无。

注解
  如果调用此函数时另一个线程拥有该互斥量，此函数将不会返回， 直到当前线程获得该互斥量的所有权。

## ◆ FX_Mutex_TryLock()

FX_BOOL FX_Mutex_TryLock | ( | FX_MUTEX * | pMutex | ) |

尝试锁定一个互斥量。

参数

  [in] | pMutex | 指向互斥量的指针。必须不能是NULL指针。

返回
  true表示给定的互斥量对象锁定成功或当前线程已经拥有该互斥量， false表示另一个线程已经拥有该互斥量或发生其他错误。

## ◆ FX_Mutex_Unlock()

void FX_Mutex_Unlock | ( | FX_MUTEX * | pMutex | ) |

解锁一个互斥量。

参数

  [in] | pMutex | 指向互斥量的指针。必须不能是NULL指针。

返回
  无。

## ◆ FX_RWLock_Destroy()

void FX_RWLock_Destroy | ( | FX_RWLOCK * | pRWLock | ) |

销毁一个读写锁。

参数

  [in] | pRWLock | 指向要销毁的读写锁的指针。必须不能是NULL指针。

返回
  无。

## ◆ FX_RWLock_Initialize()

FX_BOOL FX_RWLock_Initialize | ( | FX_RWLOCK * | pRWLock | ) |

初始化读写锁。

参数

  [in] | pRWLock | 指向需要初始化的读写锁的指针。必须不能是NULL指针。

返回
  true表示成功，false表示失败。

## ◆ FX_RWLock_ReadLock()

void FX_RWLock_ReadLock | ( | FX_RWLOCK * | pRWLock | ) |

锁定以进行共享读取。

参数

  [in] | pRWLock | 指向读写锁的指针。必须不能是NULL指针。

返回
  无。

注解
  如果调用此函数时另一个线程拥有该读写锁，此函数将不会返回， 直到当前线程获得该读写锁的所有权。

## ◆ FX_RWLock_ReadUnlock()

void FX_RWLock_ReadUnlock | ( | FX_RWLOCK * | pRWLock | ) |

解锁以进行共享读取。

参数

  [in] | pRWLock | 指向读写锁的指针。必须不能是NULL指针。

返回
  无。

## ◆ FX_RWLock_TryReadLock()

FX_BOOL FX_RWLock_TryReadLock | ( | FX_RWLOCK * | pRWLock | ) |

尝试锁定以进行共享读取。

参数

  [in] | pRWLock | 指向读写锁的指针。必须不能是NULL指针。

返回
  true表示给定的读写锁对象锁定成功或 当前线程已经拥有该读写锁，false表示另一个线程已经拥有 该读写锁或发生其他错误。

## ◆ FX_RWLock_TryWriteLock()

FX_BOOL FX_RWLock_TryWriteLock | ( | FX_RWLOCK * | pRWLock | ) |

尝试锁定以进行独占写入。

参数

  [in] | pRWLock | 指向读写锁的指针。必须不能是NULL指针。

返回
  true表示给定的读写锁对象锁定成功或 当前线程已经拥有该读写锁，false表示另一个线程已经拥有 该读写锁或发生其他错误。

## ◆ FX_RWLock_WriteLock()

void FX_RWLock_WriteLock | ( | FX_RWLOCK * | pRWLock | ) |

锁定以进行独占写入。

参数

  [in] | pRWLock | 指向读写锁的指针。必须不能是NULL指针。

返回
  无。

注解
  如果调用此函数时另一个线程拥有该读写锁，此函数将不会返回， 直到当前线程获得该读写锁的所有权。

## ◆ FX_RWLock_WriteUnlock()

void FX_RWLock_WriteUnlock | ( | FX_RWLOCK * | pRWLock | ) |

解锁以进行独占写入。

参数

  [in] | pRWLock | 指向读写锁的指针。必须不能是NULL指针。

返回
  无。

## ◆ FX_SpinLock_Destroy()

void FX_SpinLock_Destroy | ( | FX_SPINLOCK * | pSpinLock | ) |

销毁一个自旋锁。

参数

  [in] | pSpinLock | 指向要销毁的自旋锁的指针。

返回
  无。

## ◆ FX_SpinLock_Initialize()

FX_BOOL FX_SpinLock_Initialize | ( | FX_SPINLOCK * | pSpinLock | ) |

初始化自旋锁。

参数

  [in] | pSpinLock | 指向要初始化的自旋锁的指针。

返回
  true表示成功，false表示失败。

## ◆ FX_SpinLock_IsLocked()

FX_BOOL FX_SpinLock_IsLocked | ( | FX_SPINLOCK * | pSpinLock | ) |

确定指定的自旋锁是否被锁定。

参数

  [in] | pSpinLock | 指向自旋锁的指针。

返回
  true表示自旋锁被锁定，false表示自旋锁未被锁定。

## ◆ FX_SpinLock_Lock()

void FX_SpinLock_Lock | ( | FX_SPINLOCK * | pSpinLock | ) |

锁定一个自旋锁。

参数

  [in] | pSpinLock | 指向自旋锁的指针。

返回
  无。

注解
  如果调用此函数时另一个线程拥有该自旋锁，此函数将不会返回， 直到当前线程获得该自旋锁的所有权。

## ◆ FX_SpinLock_TryLock()

FX_BOOL FX_SpinLock_TryLock | ( | FX_SPINLOCK * | pSpinLock | ) |

尝试锁定一个自旋锁。

参数

  [in] | pSpinLock | 指向自旋锁的指针。

返回
  true表示给定的自旋锁对象锁定成功或 当前线程已经拥有该自旋锁，false表示另一个线程已经拥有该自旋锁 或发生其他错误。

## ◆ FX_SpinLock_Unlock()

void FX_SpinLock_Unlock | ( | FX_SPINLOCK * | pSpinLock | ) |

解锁一个自旋锁。

参数

  [in] | pSpinLock | 指向自旋锁的指针。

返回
  无。

## ◆ FX_Thread_Create()

FX_HTHREAD FX_Thread_Create | ( | FX_INT32 | nPriority,
|  | size_t | szStack,
|  | FX_CALLBACK_ThreadProc | threadProc,
|  | FX_LPVOID | param
| ) |  |

创建一个新线程。

参数

  [in] | nPriority | 线程优先级。
  [in] | szStack | 线程堆栈大小，设置为0表示使用默认堆栈大小。
  [in] | threadProc | 线程回调函数。
  [in] | param | 传递给线程过程的参数。

返回
  线程句柄。NULL表示失败。

## ◆ FX_Thread_Exit()

void FX_Thread_Exit | ( |  | ) |

退出当前线程。

返回
  无。

## ◆ FX_Thread_GetContext()

CFX_ThreadContext* FX_Thread_GetContext | ( |  | ) |

获取当前线程上下文。

返回
  当前线程上下文。NULL表示失败。

## ◆ FX_Thread_GetExceptionContext()

CFX_ExceptionContext* FX_Thread_GetExceptionContext | ( |  | ) |

获取当前线程异常上下文。

返回
  当前线程异常上下文。NULL表示失败。

## ◆ FX_Thread_GetHandle()

FX_HTHREAD FX_Thread_GetHandle | ( |  | ) |

获取当前线程句柄。

返回
  当前线程句柄，失败时返回NULL。

## ◆ FX_Thread_GetHandler()

FX_THREADHANDLER* FX_Thread_GetHandler | ( |  | ) |

获取当前线程处理器。

返回
  当前线程处理器。NULL表示没有设置线程处理器。

注解
  在单线程模式下或_FPDFAPI_MT_未定义时，此函数始终返回NULL。

## ◆ FX_Thread_GetLastError()

FX_INT32 FX_Thread_GetLastError | ( |  | ) |

获取当前线程中的最后错误代码。

返回
  最后错误代码。

## ◆ FX_Thread_GetPriority()

FX_INT32 FX_Thread_GetPriority | ( | FX_HTHREAD | hThread | ) |

获取线程优先级。

参数

  [in] | hThread | 指定要检索其优先级的线程的线程句柄。

返回
  线程的优先级代码。

## ◆ FX_Thread_GetPrivateData()

FX_LPVOID FX_Thread_GetPrivateData | ( | FX_LPVOID | key | ) |

获取当前线程中的私有数据。

参数

  [in] | key | 用于指定要检索的私有数据的键值。

返回
  指向私有数据的指针，失败时返回NULL。

## ◆ FX_Thread_RemovePrivateData()

void FX_Thread_RemovePrivateData | ( | FX_LPVOID | key | ) |

移除当前线程中的私有数据。

参数

  [in] | key | 用于指定要移除的私有数据的键值。

返回
  无。

## ◆ FX_Thread_SetHandler()

void FX_Thread_SetHandler | ( | FX_THREADHANDLER * | pThreadHandler | ) |

设置当前线程处理器。

参数

  [in] | pThreadHandler | 指向外部线程处理器的指针。

返回
  无。

注解
  在单线程模式下或_FPDFAPI_MT_未定义时，此函数被禁用。

## ◆ FX_Thread_SetLastError()

void FX_Thread_SetLastError | ( | FX_INT32 | nErr | ) |

设置当前线程中的最后错误代码。

参数

  [in] | nErr | 要设置的最后错误代码。

返回
  无。

## ◆ FX_Thread_SetPriority()

void FX_Thread_SetPriority | ( | FX_HTHREAD | hThread,
|  | FX_INT32 | nPriority
| ) |  |

设置线程优先级。

参数

  [in] | hThread | 指定要更改其优先级的线程的线程句柄。
  [in] | nPriority | 线程优先级代码。

返回
  无。

## ◆ FX_Thread_SetPrivateData()

void FX_Thread_SetPrivateData | ( | FX_LPVOID | key,
|  | FX_LPVOID | data,
|  | PD_CALLBACK_FREEDATA | callback
| ) |  |

设置当前线程中的私有数据。

参数

  [in] | key | 用于指定要设置的私有数据的键值。
  [in] | data | 指向私有数据的指针。
  [in] | callback | 用于释放私有数据的回调函数地址。 如果不需要额外的过程来释放私有数据，则传递NULL。

返回
  无。

## ◆ FX_Thread_WaitForMultipleThreads()

FX_INT32 FX_Thread_WaitForMultipleThreads | ( | const FX_HTHREAD * | pThreads,
|  | FX_INT32 | nCount
| ) |  |

等待多个线程终止。

参数

  [in] | pThreads | 指向线程句柄数组的指针。
  [in] | nCount | 数组中线程的数量。

返回
  0表示所有线程成功终止，其他值表示失败。

## ◆ FX_Thread_WaitForSingleThread()

FX_INT32 FX_Thread_WaitForSingleThread | ( | FX_HTHREAD | hThread | ) |

等待单个线程终止。

参数

  [in] | hThread | 指定要等待的线程的线程句柄。

返回
  0表示线程成功终止，其他值表示失败。

## ◆ FX_Thread_Yield()

void FX_Thread_Yield | ( |  | ) |

将处理器让出给另一个线程。

返回
  无。