Is it correct to use std::async for background tasks inside an internal thread (not from main process’s thread)

  c++, multithreading, stdasync

I would like to have your opinion for this general technical concept.

There is a Process, this process creates multiple threads for different tasks.

Main process: it is a windows service written by C# code.
There are several threads that are create inside the main process: Thread_01, Thread_02, …

Inside Thread_01: There is a Wrapper dll written in managed C++ to consume DLL_01. (DLL_01 is a dll written by me in native C++ code, that provides some APIs: Add, Remove, Connect)

Add and Remove can run very fast, but Connect may take more than 10 seconds and blocks the caller until it finishes.

I am thinking to use std::async to do the Connect function code, and send the result through a callback to the caller (main process).

Is it a good approach? I heard we cannot create or it is better not to create any thread inside inner threads, is it true? If so, how about std::async ?

Any recommendation is appreciated.
Thanks in advance,

Source: Windows Questions C++