110,570
社区成员
发帖
与我相关
我的任务
分享
public class MySqlConnectors
{
private MySqlConnection[] m_connectors;
AutoResetEvent[] m_waitHandlers;
public MySqlConnectors( string usr, string pwd, string db, string ip, ushort port = 3306, int maxConnectors = 16 )
{
m_waitHandlers = new AutoResetEvent[maxConnectors];
m_connectors = new MySqlConnection[maxConnectors];
string constr = string.Concat(new object[] {
"data source=", ip,
";port=", port.ToString(),
";user id=", usr,
";password=", pwd,
";database=", db
});
for (int i = 0; i < maxConnectors; ++i)
{
m_waitHandlers[i] = new AutoResetEvent(true);
m_connectors[i] = new MySqlConnection(constr);
m_connectors[i].Open();
}
}
~MySqlConnectors()
{
for (int i = 0; i < m_connectors.Length; ++i)
{
m_waitHandlers[i].Close();
m_connectors[i].Close();
}
Log.show("Mysql connector shutdown...");
}
public MySqlConnection GetConnector( out int index )
{
index = WaitHandle.WaitAny(m_waitHandlers);
return m_connectors[index];
}
public void Release( int index )
{
m_waitHandlers[index].Set();
}