<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                對象池 場景:數據庫連接池 ~~~ type DBConnection struct { index int } type DBConnectionPool struct { conQueue chan *DBConnection } /** 創建對象池 */ func CreateDBConnectionPool(maxNum int) *DBConnectionPool { objPool := DBConnectionPool{} objPool.conQueue = make(chan *DBConnection, maxNum) for i := 0; i < maxNum; i++ { con := new(DBConnection) con.index = i fmt.Printf("connection address:%p , value:%v \n", con, con.index) objPool.conQueue <- &DBConnection{} } fmt.Println("Object pool created") return &objPool } /** 獲取對象 */ func (pool *DBConnectionPool) GetConnect(timeOut time.Duration) (*DBConnection, error) { select { case con := <-pool.conQueue: return con, nil case <-time.After(timeOut): return nil, errors.New("get connection time out") } } func (pool *DBConnectionPool) ReleaseConnect(con *DBConnection) error { select { case pool.conQueue <- con: return nil default: return errors.New("overflow") } } func TestConnectPoolMock(t *testing.T) { pool := CreateDBConnectionPool(10) for i := 1; i <= 20; i++ { go func(transId int) { con, err := pool.GetConnect(time.Millisecond * 200) if err != nil { t.Log("get connection failed") } fmt.Printf("do something:%v, onnection type:%T, address:%p \n", transId, con, con) time.Sleep(300 * time.Millisecond) pool.ReleaseConnect(con) }(i) } time.Sleep(3 * time.Second) } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看