有一个项目:多客户端(几百个),服务端采用socket监听,把客户端的数据写入数据库,如何保证客户端数据不丢包和服务器数据库的写入不会产生并发错误(或者各数据都能够完整的写入数据库)。
请大家提提思路,不胜感谢!
我的思路:服务器采用多线程,如果listen到客户端请求,就开一个线程处理数据写入数据库,但是这样的结构会否出现数据库的并发写入冲突问题呢?
请大家提提思路,不胜感谢!
我的思路:服务器采用多线程,如果listen到客户端请求,就开一个线程处理数据写入数据库,但是这样的结构会否出现数据库的并发写入冲突问题呢?
如果listen到客户端请求,就开一个线程来处理的话,线程的创建跟销毁会有消耗的,用线程池实现下
至于数据库,我也用得不多,用事务的话应该不错吧
遇到一个新问题:多个线程用共享ADO链接访问数据库出现错误:链接占线导致另一个hstmt
请问这个问题怎么解决好?因为不可能为每一个线程都开一个数据库链接吧?好像跟线程池有关联
难道每一个线程都要建一个连接?
2、如果服务器端对每个请求的服务都很简单的话(比如仅仅是回复一个简单的“Ok”),就没必要为每个服务都开个新线程,这样确实效率低(开关线程本身耗费资源),且高并发情况下服务器端负担重(几百个连接就开几百个线程?),可以考虑非阻塞模式,服务器端单线程搞定,毕竟几百个连接不算多,效率影响不大。