[OV JS] Fix multiple Core instances (#24053)
### Details: - New instance of Core creating on execution of readModel method. This PR is fixing this behavior. ### Tickets: - 138160 --------- Co-authored-by: Alicja Miloszewska <alicja.miloszewska@intel.com>
This commit is contained in:
parent
1a5776e8ef
commit
6e2286086f
|
|
@ -12,11 +12,13 @@ class ReaderWorker : public Napi::AsyncWorker {
|
|||
public:
|
||||
/**
|
||||
* @brief Constructs ReaderWorker class that is responisible for reading the model asynchronously.
|
||||
* @note In the Execute() method, the Core object might be used concurrently to call read_model().
|
||||
* @param info contains passed arguments. Can be empty.
|
||||
*/
|
||||
ReaderWorker(const Napi::Env& env, ReadModelArgs* args)
|
||||
ReaderWorker(const Napi::Env& env, ov::Core& core, ReadModelArgs* args)
|
||||
: Napi::AsyncWorker{env, "ReaderWorker"},
|
||||
_deferred{env},
|
||||
_core{core},
|
||||
_args{args},
|
||||
_model{} {
|
||||
OPENVINO_ASSERT(_args, "Invalid pointer to ReadModelArgs.");
|
||||
|
|
@ -35,6 +37,7 @@ protected:
|
|||
///@}
|
||||
private:
|
||||
Napi::Promise::Deferred _deferred;
|
||||
ov::Core& _core;
|
||||
ReadModelArgs* _args;
|
||||
std::shared_ptr<ov::Model> _model;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,12 +6,10 @@
|
|||
#include "node/include/model_wrap.hpp"
|
||||
|
||||
void ReaderWorker::Execute() {
|
||||
ov::Core core;
|
||||
|
||||
if (_args->model_str.empty())
|
||||
_model = core.read_model(_args->model_path, _args->bin_path);
|
||||
_model = _core.read_model(_args->model_path, _args->bin_path);
|
||||
else
|
||||
_model = core.read_model(_args->model_str, _args->weight_tensor);
|
||||
_model = _core.read_model(_args->model_str, _args->weight_tensor);
|
||||
}
|
||||
|
||||
void ReaderWorker::OnOK() {
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ Napi::Value CoreWrap::read_model_sync(const Napi::CallbackInfo& info) {
|
|||
Napi::Value CoreWrap::read_model_async(const Napi::CallbackInfo& info) {
|
||||
try {
|
||||
ReadModelArgs* args = new ReadModelArgs(info);
|
||||
ReaderWorker* _readerWorker = new ReaderWorker(info.Env(), args);
|
||||
ReaderWorker* _readerWorker = new ReaderWorker(info.Env(), _core, args);
|
||||
_readerWorker->Queue();
|
||||
|
||||
return _readerWorker->GetPromise();
|
||||
|
|
|
|||
Loading…
Reference in New Issue