Win32 Named pipe behavior
<p>Win7, x64, C++, Win32 API, Console app, Visual Studio Community 2015</p>

<p>I've scoured all the SO questions on named pipes and can't find the answer I need.</p>

<p>I'm writing a server to broadcast data one way via named pipe to multiple identical clients on the same machine.  The sever and each client is in its own process (.exe).  The data is sent when <em>all</em> the clients have somehow signaled back to the server that they are ready (via named event or other mechanism).  </p>

<p>The <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx" rel="nofollow">documentation</a> says multiple clients can connect to a single pipe instance, but then proceeds to talk about <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa365594(v=vs.85).aspx" rel="nofollow">multiple instances</a>.</p>

<p>I have a few questions about the pipe on the server side:</p>

<ol>
<li>For a small number of clients and low throughput, which is the simplest: 1 thread, 1 pipe instance; 1 thread and multiple pipe instances; multiple threads and one instance per thread? </li>
<li>If a single thread does <code>ConnectNamedPipe</code> multiple times on the same instance of a pipe, does this mean a single <code>WriteFile</code> is broadcast to all clients that have connected to that particular instance of the pipe?</li>
<li>If multiple clients can connect to a particular instance of a pipe, does writing to that pipe from the server side block until <em>all</em> the clients have read the previous message?</li>
<li>Is doing a one-to-many situation uncommon?  Why?  </li>
</ol>