c++ - Can I make a thread-safe std::atomic<vector<int>>? -


i'm having function needs executed n=1000 times. functions monte carlo style simulation , returns int result. i'd run nthreads=4 in parallel. whenever thread finishes 1 cycle, should put result in std::vector<int>. thus, after 1000 cycles, i've vector of 1000 ints can examined statistics.

since std::vector not thread-safe, thought std::mutex (which surely work).

but wonder if can declare vector atomic , around mutexes? possible have std::atomic<std::vector<int>>? , can use push_back etc. on it?

you don't need to. totally okay, access ja std::vector multiple threads, if

  • you read objects
  • you write different objects

so make sure, create vector of size n=1000 , depending on thread number (1 4) assign elements 0-249, 250-499 etc. threads.

so each of thread computes n/nthreads elements.


Comments

Popular posts from this blog

java - Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX -

c# - Get rid of xmlns attribute when adding node to existing xml -