Publish date: 2019-12-10

IBProvider v5.9 and LCPI OLE DB Services v1.12. Moving to a shared thread pool

In the current update, IBProvider v5.9 and LCPI OLE DB Services v1.12 started to use a common thread pool. This rearrangement of subsystems makes the operating system resource management more efficient and improves the overall performance of high-load applications.

Previous releases of the provider and OLE DB services used their own thread pools.

Separate thread pools

Now the thread pool is put into a separate DLL that is statically linked to both IBProvider and LCPI OLE DB Services.

Shared thread pool

Currently, the threads are being used for the following tasks:

  • Connection pool
  • Query pool
  • Asynchronous loading of result sets
  • Asynchronous notifications of the provider
  • Working with files
  • Garbage collection in updatable result sets

A common thread pool is used only in vc16 builds (VS2019). Builds vc12xp-vc15 continue to use their own thread managers.

The dependence of the provider and OLE DB services on external DLLs somewhat complicates the distribution of their binary files. To control child module versions, you may use the LCPI.BINARY_INFO resource added to all binary files.

The content of LCPI.BINARY_INFO for the 64-bit provider (vc16):

<?xml version="1.0" encoding="UTF-8"?>
<BinaryInfo Version="1.0">
  <References>
    <Reference Name="lcpi.infrastructure.core-v01_vc16_w64_i.dll" Version="1.0.0.46" />
    <Reference Name="lcpi.infrastructure.multitasking.ibp-v02_vc16_w64_i.dll" Version="2.0.0.280" />
  </References>
</BinaryInfo>

The content of LCPI.BINARY_INFO for the 32-bit provider (vc16):

<?xml version="1.0" encoding="UTF-8"?>
<BinaryInfo Version="1.0">
  <References>
    <Reference Name="lcpi.infrastructure.core-v01_vc16_w32_i.dll" Version="1.0.0.46" />
    <Reference Name="lcpi.infrastructure.multitasking.ibp-v02_vc16_w32_i.dll" Version="2.0.0.280" />
  </References>
</BinaryInfo>

Thus, when distributing the provider and OLE DB services (vc16) you need to package two additional DLLs into the distribution kit:

  • lcpi.infrastructure.core-xxxxxx.dll
  • lcpi.infrastructure.multitasking.ibp-xxxxxx.dll

Other changes

  • Change of the binary file name structure
  • Attention! Renaming of the resource types:
    • “PROG_REG” -> “LCPI.PROG_REG”
    • “PROG_REG_PARAMS” -> “LCPI.PROG_REG_PARAMS”
  • Errors fixed in the debugging builds of the provider
  • PDB files included into the distribution kits
    • “IBProvider Developer Pack” is no longer available for download
  • Reorganization of the catalogs with SDK header files and the C++ library

Publish date: 2019-12-10. Copyright: IBProvider. This material may be reproduced on other web sites, without written permission but link https://www.ibprovider.com/eng required.