Dịch Vụ Sửa Máy Tính Văn Phòng lại ngôn ngữ mới gọi

Dịch Vụ Sửa Máy Tính Văn Phòng Tháng 1 năm 2010, tôi đã xem li là Google Go for eWEEK . Trong bài đánh giá đó, tôi tập trung chủ yếu vào cú pháp của ngôn ngữ. Kể từ đó, ngôn ngữ đã thay đổi và phát triển, lên đến đỉnh điểm (cuối cùng) trong năm nay với Phiên bản 1.0 vào ngày 28 tháng 3 và phát hành 1.0.3 vào ngày 24 tháng 9.

Và trong vài tháng qua, đã có một vài bản phát hành nhỏ để khắc phục một số vấn đề, có nghĩa là bây giờ là thời điểm tốt để lấy nó cho spin khác và xem nó đã lớn lên như thế nào.

Đi và lập trình đa lõi

Một điều tôi đã có một cái nhìn khó khăn tại thời điểm này là concurrency. Phần lớn các phần mềm trên nền Web ngày nay cần phải có khả năng xử lý khối lượng lớn người dùng. Đồng thời là phải. Để chạy một số thử nghiệm đồng thời với Google Go, tôi đã sử dụng bộ xử lý Core i7 thế hệ thứ hai của Intel với bốn lõi, mỗi lõi có hai chủ đề, cho tám CPU ảo. Một tìm kiếm Google nhanh chóng cho các vấn đề đồng thời trong Go cho thấy một số người phàn nàn rằng các chương trình của họ chạy chậm hơn. Tuy nhiên, đây không phải là trường hợp khi tôi kiểm tra Go lần thứ hai.

Hãy nhớ rằng, lập trình song song là không dễ dàng, và nó không phải cái gì mà bạn chỉ cần bật lên số lượng lõi và để cho nó rip. Bạn phải cẩn thận thiết kế các thuật toán của bạn để làm việc song song. Và nếu chúng không được thiết kế đúng, có khả năng bạn sẽ thấy sự gia tăng hiệu suất hoặc tăng hiệu suất. Các thuật toán có thể kết thúc chạy theo tuần tự, và sau đó thêm vào trên không của cố gắng phân chia chúng giữa các lõi, và toàn bộ điều sẽ mất nhiều thời gian để chạy.

Để xử lý đồng thời, Go bao gồm những gì mà Google gọi là “goroutines”, tương tự như các coroutines bằng các ngôn ngữ khác. Nhưng một tính năng quan trọng của goroutines là họ không chỉ cung cấp năng suất và tiếp tục. Bạn cũng có thể dễ dàng giao tiếp giữa chúng bằng cách sử dụng các biến được gọi là các kênh.

Dịch Vụ Sửa Máy Tính Tại Cầu Giấy Bạn cũng có thể giao tiếp giữa các thói quen song song với các ngôn ngữ khác nhưng Go thực hiện điều này dễ dàng. Tuy nhiên, điều này sẽ thêm vào công việc bạn cần làm khi viết mã của bạn. Kênh có hiệu quả làm việc dưới dạng các biến được chia sẻ, nhưng đồng bộ hóa được tích hợp sẵn. Và có thể có những rắc rối có thể xảy ra: Nếu bạn có một biến kênh đơn lẻ và, nói rằng, tám luồng dữ liệu, mỗi luồng chạy trên một lõi ảo và bạn buộc các luồng đợi như là một sử dụng các kênh, sau đó bạn hoàn toàn đánh bại các song song.

Tôi đã có thể dễ dàng đặt cùng một số mã để chứng minh vấn đề này. Vì vậy, điều quan trọng là phải hiểu các thuật toán song song hoạt động như thế nào và làm thế nào để sử dụng các khái niệm song song như giảm.

Tuy nhiên, bằng cách sử dụng goroutines, bạn có thể tạo ra một vòng lặp song song hiệu quả. Nếu bạn đã quen thuộc với phần mở rộng Cilk Plus với C ++, bạn sẽ lưu ý rằng điều này cũng tương tự như vòng lặp Cilk_for. Tuy nhiên, trong Cilk Plus bạn chỉ cần viết một vòng lặp như một vòng lặp C ++ thông thường và thời gian chạy quyết định cách thức và thời gian để thực hiện song song, và làm thế nào để chia nó giữa các lõi. Trong Go, có không phải là một song song cho các vòng lặp được xây dựng trong cú pháp, nhưng bạn có thể dễ dàng đẻ trứng song song cho họ như vậy: Dịch Vụ Sửa Máy Tính Tại Nhà Hà Nội


Bài viết liên quan