std::mutex передача по ссылке
Подскажите пожалуйста, что то никогда не задумывался - std::mutex можно передавать, как обычный параметр по ссылке через функцию ? Его же не обязательно объявлять глобально ?
Ну то есть вот так:
#include <iostream>
#include <string>
#include <vector>
#include <thread>
#include <mutex>
void my_func(std::mutex& my_mutex, std::vector<std::string>& my_vevtor_string, size_t& my_sizet)
{
for (int i = 0; i < 9999999; i++)
{
my_mutex.lock();
my_vevtor_string.push_back(std::to_string(my_sizet));
std::cout << my_sizet << std::endl;
my_sizet++;
for (;;)
{
std::this_thread::sleep_for(std::chrono::seconds(100));
}
my_mutex.unlock();
}
}
int main()
{
std::mutex my_mutex;
std::vector<std::string>my_vevtor_string;
size_t my_sizet = 0;
std::thread my_thread(my_func, std::ref(my_mutex), std::ref(my_vevtor_string), std::ref(my_sizet));
for (int i=0; i<9999999; i++)
{
my_mutex.lock();
my_vevtor_string.push_back(std::to_string(my_sizet));
std::cout << my_sizet << std::endl;
my_sizet++;
my_mutex.unlock();
}
my_thread.join();
}
Вроде работает, но решил все таки уточнить.