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();

}

Вроде работает, но решил все таки уточнить.


Ответы (0 шт):