THẢO LUẬN

mình cũng đang cần cái này. Like!

+2

console.log (người); // Bryant you can edit it.

+2
thg 7 13, 2018 8:15 SA

hóng những bài viết tiếp theo của bạn, rất chi tiết (Y)

+1
Avatar
đã bình luận cho bài viết
thg 7 13, 2018 6:13 SA

Bài viết hay mà ít người quan tâm Thank thớt nhé 😄

0
thg 7 13, 2018 4:48 SA

hôm trước mình đọc lại hiểu là một container chỉ cho tối đa 2 network (user-define ) được connect vào, nên mới thắc mắc. Nay đọc lại thì thấy có vẻ không rõ nghĩa lắm =))

0
thg 7 13, 2018 4:28 SA

Vì em cho hết nó vào trong 1 scope nên các task trong cái scope đó vẫn chạy theo thứ tự. Thứ tự chạy task trong scope không có 1 tí gì liên quan tới THỜI GIAN thực thi task, mà chỉ liên quan tới THỨ TỰ KHAI BÁO task.

1 bắt đầu -> 1 kết thúc -> 2 bắt đầu -> ...đợi rất lâu nhưng 3 vẫn không được phép start ... -> 2 kết thúc -> 3 bắt đầu-> 3 kết thúc

Do vậy kết quả sẽ không in theo cái mong muốn của em là 1-1 1-3 1-2 mà vẫn in theo thứ tự FIFO là 1-1 1-2 1-3

Để các task chạy đồng thời, em phải tách nó ra các queue khác nhau như ví dụ này Em có thể thêm đoạn print start - endperformWork để check log.

DispatchQueue.global(qos: .userInitiated).async {[unowned self] in
    print("1-1") // task 1
    print("1-3") // task 3
}

DispatchQueue.global(qos: .userInitiated).async {[unowned self] in
    self.performWork() // task 2
}

func performWork() {
    print("1-2 start")
    let n = 5000
    var matrix = Array(repeating: [Int](repeating: 0, count: n), count: n)
    for i in 0..<n {
        for j in 0..<n {
            matrix[i][j] = i + j
        }
    }
    print("1-2 finish")
}

Tuy nhiên ví dụ này cũng KHÔNG đảm bảo việc LUÔN LUÔN in ra

1-1, 1-2 start, 1-3, 1-2 finish

mà nó sẽ có 2 kết quả

1-1 , 1-2 start, 1-3, 1-2 finish

hoặc

1-2 start, 1-1, 1-3, 1-2 finish

0

đoạn ở trong catch kìa em 😃

0
thg 7 13, 2018 4:02 SA

Em hiểu ý anh nói là trong concurrent queue giả sử có 3 tasks là task 1, task 2, task 3 thì task 1 chay trước rồi đến task2 rồi đến task 3 nhưng 3 task này vẫn chạy đồng thời. Ví dụ:

DispatchQueue.global(qos: .userInitiated).async {[unowned self] in print("1-1") // task 1 self.performWork() // task 2 print("1-3") // task 3 }

func performWork() { let n = 5000 var matrix = Array(repeating: [Int](repeating: 0, count: n), count: n) for i in 0..<n { for j in 0..<n { matrix[i][j] = i + j } } print("1-2") }

thì thực tế nó sẽ in ra kết quả: 1-1 1-2 1-3

nhưng nếu task2 làm công việc nặng thì theo lý mà nó phải in ra thế này mới đúng chứ anh: 1-1 1-3 1-2

0
thg 7 13, 2018 3:49 SA

Các concurrency queue sẽ chạy đồng thời, nhưng các work items (tức là các câu lệnh trong cái scope {} của nó sẽ chạy lần lượt, theo thứ tự FIFO

Tài liệu Apple có viết rõ đây em nhé

A dispatch queue can be either serial, so that work items are executed one at a time, or it can be concurrent, so that work items are dequeued in order, but run all at once and can finish in any order. Both serial and concurrent queues process work items in first in, first-out (FIFO) order.

Em có thể tự tạo cho mình 1 chương trình đơn giản để dễ hiểu hơn. Ví dụ đoạn code

DispatchQueue.global().async {
    print("1-1")
    print("1-2")
}

DispatchQueue.global().async {
    print("2-1")
    print("2-2")
}

có thể in ra

1-1
2-1
2-2
1-2

nhưng không thể in ra

1-2
2-1
1-1
2-2

vì 1-2 theo thứ tự phải luôn chạy sau 1-1

0

em tìm không ra anh ơi

0

cám ơn anh ạ.

0
thg 7 13, 2018 3:39 SA

@tuanhavan Ah, em có thể cài thêm package gulp của npm để tự động generate js và css ra nhé.

Tham khảo tại link này nhé. https://viblo.asia/p/laravel-5-elixir-ZWApGxZOR06y

0

Bài viết rất hữu ích, thank anh 😄

0

ùi biến hóa hay quá cũng hơi khó hiểu, để đó tối e về đọc , tks anh ❤️

0
thg 7 13, 2018 3:00 SA

Hóng phần 2... Thank you

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 7 13, 2018 2:57 SA

@devil_boom_129 Đổi PATCH thành PUT có thể giải quyết được vấn đề với 1 controller, tuy nhiên đó không phải là cách giải quyết bản chất của vấn đề em ạ 😂

Em nên đổi URL thì hơn.

Ví dụ như việc update thông tin về trận đấu thì có thể là /matches/{id}, còn update về score thì có thể là /matches/{id}/score chẳng hạn 😄

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 7 13, 2018 2:51 SA

vậy giờ em chỉ để 1 cái PATCH để update thông tin trận đấu, còn chuyển hết ghi tỉ số và public trận đấu thành PUT là được đúng không ạ?

0
thg 7 13, 2018 2:38 SA

hàng đợi DispatchQueue.global là một concurrency queue thì theo em hiểu là các công việc(tasks) sẽ chạy gần như đồng thời nên em hiểu là 3.1 và 4.1 ở 2 hàng đợi sẽ chạy gần như đồng thời .Nếu như anh nói là 3.1 chạy xong rồi mới đến 4.1 vậy thì hàng đợi DispatchQueue.global thể hiện tính concurrency queue ở chỗ nào anh . Mong anh trả lời giúp e ạ?

0

@duongricky Về cơ bản là sau khi gọi 2 hàm này thì kết quả 2 hàm này là giống nhau. Nhưng Lang::setLocale là set default locale còn App::setLocale là set current application locale. Bản chất hàm setLocale gọi từ App cũng sẽ gọi tới setLocale trong Lang, và làm thêm một số việc như change config['app.locale'] và gọi tới event update locale.

setLocale gọi từ App.

    public function setLocale($locale)
    {
        $this['config']->set('app.locale', $locale);

        $this['translator']->setLocale($locale);

        $this['events']->dispatch(new Events\LocaleUpdated($locale));
    }

setLocale gọi từ Lang

    public function setLocale($locale)
    {
        $this->locale = $locale;
    }

Chi tiết hơn bạn vào 2 files sau để tìm hiểu rõ hơn nha.

  • \Illuminate\Translation\Translator.php
  • \Illuminate\Foundation\Application.php
+1
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí