Is ARecastNavMesh::BeginBatchQuery() fully implemented?

Our game uses ARecastNavMesh with async rebuild enabled (ie. #define RECAST_ASYNC_REBUILDING 1).

We access the navmesh from both the main thread and from worker threads. Such accesses are guarded with ARecastNavMesh::BeginBatchQuery/FinishBatchQuery():

{
    NavMesh->BeginBatchQuery();
    NavMesh->call accessors
    NavMesh->FinishBatchQuery();
}

The docs for BeginBatchQuery() and FinishBatchQuery() say ‘Starts batch processing and locks access to navigation data from other threads’ and ‘Finishes batch processing and release locks’ respectively.

However, the implementations simply increment/decrement an integer counter (ARecastNavMesh::BatchQueryCounter) which does not appear to be used anywhere else.

  1. Should I override ARecastNavMesh::BeginBatchQuery() (since it’s a virtual function) and add a critical section read lock?
  2. If so, where can I add the corresponding write lock to prevent async navmesh changes occurring between the calls to BeginBatchQuery() and FinishBatchQuery()?

Thanks.