Multithreaded Filtering
To make sure that multithreaded filter processes are thread-safe, each context pointer created using fpInit() or fpInitWithLicenseData() should only be used by a single thread. This applies to in-process and out-of-process API calls. Creating a context pointer for every thread does not affect performance because the context pointer uses minimal resources.
For example, C code for file filtering must have the following logic in a thread:
fpInit() KVGetExtractInterface() fpOpenFile() fpGetMainFileInfo() /* container file */ fpGetSubFileInfo() fpExtractSubFile fpGetSubFileMetadata() fpFilterFile() fpCloseFile() fpOpenFile() fpGetMainFileInfo() /* not a container file */ fpGetDocInfoFile() fpGetOLESummaryInfoFile() fpFilterFile() fpCloseFile() ... fpShutdown()