0

既存の C++ コードがあります。

    boost::asio::ip::address m_sender_IP_address;




void Udp_comm::start_receive()
{
    //receive UDP message
    m_sock_r.async_receive_from(
        boost::asio::buffer(m_recv_buffer), 
        m_sender_endpoint,
        boost::bind(&Udp_comm::handle_receive, this, boost::asio::placeholders::error,
            boost::asio::placeholders::bytes_transferred)); 
}

void Udp_comm::handle_receive(const boost::system::error_code& error, const std::size_t bytes_transferred)
{
    std::string recvd_message(m_recv_buffer.begin(), m_recv_buffer.begin() + bytes_transferred);
    m_sender_IP_address = m_sender_endpoint.address();//////////wait here
        //continue to listening to future messages
    start_receive();
    process_message(m_sender_IP_addres.to_string(), recvd_message);
}

m_sender_IP_address を次に受信した UDP メッセージによって上書きされないようにするにはどうすればよいですか? メソッドの2行目からメソッドhandle_receiveの1行目まで、その変数へのアクセスをロックしたいprocess_message

ロックを使用せずに同様のことを達成できますか?

4

1 に答える 1