> for(neighboring nodes)
> {
>                async_write(...)
>                async_read(...)
> }
> m_ioService.run()
>
> There exists a tcp socket connection between each of the neighbors. The handlers associated with both read and write merely do error checking.
> Is this okay, or is there a issue with this approach?

It's ok to perform read and write simultaneously.