2011-03-24 64 views
1

试图决定天气使用asio链?boost :: asio链vs共享互斥的

我最大的需求是线程正在访问一个数据库多读取和单写。

看起来像股一次只允许一个线程,有没有办法做多读和一个写使用股?

为什么股线更好,然后只使用互斥?

回答

0

增强链序列化给予它们的所有活动。互斥体通常用于确保一个线程获得资源的独占访问权。

这个问题提到,你想访问一个数据库与多个读者和一个作家。

我会考虑使用数据库连接池设计。连接池通常会让您配置池中有多少个连接,并具有获取/释放语义。如果连接不可用,则池可能会返回错误,等待连接返回并变为可用,或者增加可用连接的数量。

可以为读者创建一个连接池。它可以配置为有多个可用连接,以便多个线程可以分别请求连接,使用它,然后将其释放回池中。

第二个连接池可用于单个写入程序连接。该池应该只允许一个数据库连接(即单个写入器)。如果连接正在被一个线程使用,其他线程可以等待,直到连接被释放并且变得可用。

多线程设计中总是需要额外的关注。一定要仔细研究每个线程使用同步资源(如上述池)的方式/方式。

+0

所以基本上股不会在这里帮助? – 2011-03-30 01:02:50

+0

可以使用它来序列化书写器的活动,但可能没有多少读者的帮助。 – skimobear 2011-03-30 01:40:04