it is general not possible to use objects managed by unity internally (c++ side) in another thread. all you can do is calculating simple structs like vectors or filling a texture in the thread and when ready assign the result in the main thread to the desired target. this also means you must keep your own data structure (grid/tree) for pathfinding for example.