Function IEngine_AddFingerprint (C++) and Fingerprint constructor (.NET) can be executed in parallel from multiple threads.
Function IEngine_AddFingerprint can be executed in parallel even on the same IENGINE_USER structure, but this will make order of templates in the structure unpredictable. You can avoid this by creating multiple IENGINE_USER structures and then combining them into one by calling IEngine_ExportUserTemplate on each and then calling IEngine_ImportUserTemplate repeatedly on the same IENGINE_USER.