问答 / 4 / 6 / 创建于 2年前
在php的swoft框架中的数据库部分,有如下描述:
每个worker都是单独一个线程,给每个线程都创建了一个连接池,是否意味着这里的mysql连连接池是非线程安全的呢? 阅读源码发现在获取数据库链接和添加数据库连接时没有使用同步操作源语。请哪位大神给解答一下。
没有用过这个东西,但是根据描述的work 是单独一个线程,从新启动的线程池,那相对另外一个work 线程正常是拿不到前面一个线程的资源的,这样子来理解就是线程安全的,因为线程池初始化数量也不能过多,也要考虑mysql 并发压力,所以针对work 的线程尽量和cpu 和核数保持适当的倍数关系,充分利用cpu 的资源,过大,过小都会引起资源浪费
没用过这个东西,根据经验,每个woker是一个进程,因为各进程的变量不共享,所以每个worker都会创建各自的连接池,总连接数 = worker进程数 * 每个连接池的连结数。目测连接池是通过管道实现,所以不存在线程安全问题,除非作死跨协程共用连接。
进程
管道
参考资料:
准确的来说是多进程模型。每个进程的内存分开,也意味着每个进程都有自己的连接池;也就没有所谓的线程安全问题
楼主想问的应该是并发安全
只要你不用多线程,肯定都是线程安全的
我要举报该,理由是:
没有用过这个东西,但是根据描述的work 是单独一个线程,从新启动的线程池,那相对另外一个work 线程正常是拿不到前面一个线程的资源的,这样子来理解就是线程安全的,因为线程池初始化数量也不能过多,也要考虑mysql 并发压力,所以针对work 的线程尽量和cpu 和核数保持适当的倍数关系,充分利用cpu 的资源,过大,过小都会引起资源浪费
没用过这个东西,根据经验,每个woker是一个
进程,因为各进程的变量不共享,所以每个worker都会创建各自的连接池,总连接数 = worker进程数 * 每个连接池的连结数。目测连接池是通过管道实现,所以不存在线程安全问题,除非作死跨协程共用连接。参考资料:
准确的来说是多进程模型。每个进程的内存分开,也意味着每个进程都有自己的连接池;也就没有所谓的线程安全问题
楼主想问的应该是并发安全
只要你不用多线程,肯定都是线程安全的