加个判断
if (SqlHelper.connection.State == System.Data.ConnectionState.Closed)SqlHelper.connection.Open()
else (SqlHelper.connection.State == System.Data.ConnectionState.Broken)
{
SqlHelper.connection.Close()
SqlHelper.connection.Open()
}
多线程并不能提高执行效率,相反,由于多了线程切换,会有一丁点额外开销多线程能提高交互和响应效率。
原因是cpu只能一条一条指令的做。
如果是多核编程或多处理器编程,那就肯定能快了。
1:socket句柄就是一个整型,是映射到系统句柄队列里面(你可以认为这个值是一个key,一个key对应一个系统的具体socket结构体),指针是无意义的,比方你创建了一个socket句柄值是10,你直接使用10在任何线程都是调用这个socket,这个映射过程是socket相关api内部完成的,是全局的。2:多个线程共用一个socket分别处理收发是可以的,很多这样的例子,一些网络IO模型就是一个部分线程负责收数据包,部分线程负责发响应包,但不要多个线程共用一个socket来收,这样会导致问题。
3:你要多线程共享socket句柄,直接传值就行了,不要传引用和指针,不过注意socket关闭的同步处理。最好用一个对象来统一处理每个socket的打开和关闭,读取和发送。所有线程拿着这个对象来 *** 作socket,这样socket的有效性判断都在对象里面处理。不然一个线程关闭了socket,子线程不知道继续拿着这个句柄号在 *** 作就会出问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)