Muti-Threaded Server on Mac OS X

  • Last Post 17 July 2017
  • Topic Is Solved
mike.warren posted this 20 June 2017

I've had an issue with two requests accessing the frDocument document (especially when either loading the image from memory or during the process command) at the same time.  I put a mutex in my application before pretty much touching anything in regards to the FREngine and it works fine but it is slow.

Is there any example Objective C code that shows how to have multiple threads interacting with the frDocument object?  The two samples provided don't seem to be designed to support multiple simultaneous requests.


[edit] I switched to using the engine object instead of the frDocument object and it explicitly states only a single engine object can be loaded per process.  If that is the case, how does FREngine handle threading?

Order By: Standard | Newest | Votes
IvanPopov posted this 23 June 2017

ABBYY FineReader Engine for Mac OS does not provide a thread-safe way to work with the Engine in multi-threaded scenarios. There currently are no plans to add this functionality to the Mac OS version of FineReader Engine.

mike.warren posted this 23 June 2017

Does the Java on Linux implementation support multi-threading?

IvanPopov posted this 23 June 2017

No, currently only the Windows version of FineReader Engine provides such functionality.

That said, unlike the Mac version, FineReader Engine for Linux provides a number of options for parallel processing, e.g. the BatchProcessor object, which allow to speed up processing by performing certain processing steps in parallel.

mike.warren posted this 12 July 2017

Are there any concerns in running multiple separate applications that use ABBYY on the same Mac OS X machine that process images simultaneously?  I successfully stress tested running 4 separate applications (the test server we have has four cores) which significantly improved total performance since all cores were utilized.

Diana Khammatova posted this 17 July 2017

This scenario of using FineReader Engine is not standard so it wasn't tested. However according to the arcticle Help → API Reference → Functions → GetEngine Object Function it is possible to create and run the Engine object on a multi-processor system, but there can be only one Engine object in each process.