rrdthreads - Trực tuyến trên đám mây

Đây là rrdthreads lệnh có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


rrdthreads - Các quy định để liên kết thư viện RRD để sử dụng trong các chương trình đa luồng

SYNOPSIS


Sử dụng librrd trong các chương trình đa luồng đòi hỏi một số biện pháp phòng ngừa bổ sung, vì RRD
thư viện ở dạng ban đầu hoàn toàn không an toàn về chuỗi. Tài liệu này mô tả
các yêu cầu và cạm bẫy trên cách sử dụng phiên bản librrd đa luồng trong
các chương trình riêng. Nó cũng đưa ra những gợi ý cho sự phát triển RRD trong tương lai để giữ cho chuỗi thư viện-
an toàn.

Hiện tại chỉ có một số hoạt động RRD được thực hiện theo cách an toàn theo luồng. Tất cả đều kết thúc bằng
hậu tố "" _r "" thông thường.

MÔ TẢ


Để sử dụng librrd trong các chương trình đa luồng, bạn phải:

· Liên kết với librrd_th thay vì thư viện (sử dụng "-lrrd_th" khi liên kết)

· Sử dụng các hàm "" _r "" thay vì các hàm API thông thường

· Không sử dụng bất kỳ thông số thời gian theo phong cách nào. Phân tích cú pháp của các đặc tả thời gian như vậy là
cực kỳ không an toàn.

· Không bao giờ sử dụng các hàm không phải * "_ r" trừ khi nó được ghi lại rõ ràng rằng hàm đó là
an toàn cho lốp xe.

· Mỗi chuỗi NÊN gọi "rrd_get_context ()" trước lần gọi đầu tiên của nó tới bất kỳ "librrd_th" nào
để thiết lập dữ liệu cụ thể cho luồng. Điều này không được yêu cầu nghiêm ngặt, nhưng
đó là cách duy nhất để kiểm tra xem chức năng này có thể thực hiện việc cấp phát bộ nhớ hay không.
Nếu không, chương trình có thể chết với SIGSEGV trong tình trạng bộ nhớ thấp.

· Luôn gọi "rrd_error_clear ()" trước bất kỳ lệnh gọi nào đến thư viện. Nếu không thì cuộc gọi
có thể không thành công do một số lỗi trước đó.

GHI CHÚ CHO DRR ĐÓNG GÓP
Một số biện pháp phòng ngừa phải được tuân thủ khi phát triển RRD từ bây giờ:

· Chỉ sử dụng các chức năng an toàn luồng trong mã thư viện. Nhiều hàm libc thường được sử dụng không
an toàn chủ đề. Cẩn thận trong các trường hợp sau hoặc khi sử dụng thư viện sau
chức năng:

· Phải tránh các lệnh gọi trực tiếp đến "strerror ()": sử dụng "rrd_strerror ()" thay vào đó, nó
cung cấp một thông báo lỗi mỗi luồng.

· Các họ hàm "getpw *", "getgr *", "gethost *" (và một số khác "get *"
các hàm) không an toàn cho chuỗi: sử dụng các biến thể * "_ r"

· Các hàm thời gian: "asctime", "ctime", "gmtime", "localtime": sử dụng các biến thể * "_ r"

· "Strtok": sử dụng "strtok_r"

· "Tmpnam": sử dụng "tmpnam_r"

· Nhiều người khác (tài liệu tra cứu)

· Một tệp tiêu đề có tên rrd_is_thread_safe.h được cung cấp hoạt động với GNU
Bộ tiền xử lý C để "đầu độc" một số chức năng không an toàn cho luồng phổ biến nhất bằng cách sử dụng
Chỉ thị "chất độc #pragma GCC". Chỉ cần đưa tiêu đề này vào các tệp nguồn mà bạn muốn
giữ an toàn cho chủ đề.

· Không giới thiệu các biến toàn cục!

Nếu bạn thực sự, thực sự phải sử dụng một biến toàn cục, bạn có thể thêm một trường mới vào
cấu trúc "rrd_context" và sửa đổi rrd_error.c, rrd_thread_safe.c
rrd_non_thread_safe.c

· Không sử dụng "getopt" hoặc "getopt_long" trong * "_ r" (không trực tiếp cũng không gián tiếp).

"getopt" sử dụng các biến toàn cục và hoạt động không tốt trong một ứng dụng đa luồng khi
được gọi là đồng thời. Thay vào đó, hãy cung cấp một hàm * _r lấy tất cả các tùy chọn làm hàm
thông số. Bạn có thể cung cấp các đối số argc và ** argv cho đối số độ dài thay đổi
danh sách. Hãy xem "rrd_update_r" làm ví dụ.

· Không sử dụng chức năng "rrd_parsetime"!

Nó sử dụng rất nhiều biến toàn cục. Bạn có thể sử dụng nó trong các chức năng không được thiết kế để
an toàn luồng, như trong các hàm bao bọc phiên bản "_r" của một số thao tác (ví dụ:
"rrd_create", nhưng không phải trong "rrd_create_r")

HIỆN NAY ĐÃ THỰC HIỆN THREAD AN TOÀN CHỨC NĂNG
Hiện tại có các biến thể an toàn theo chuỗi của "rrd_update", "rrd_create", "rrd_dump",
"rrd_info", "rrd_last" và "rrd_fetch".

Sử dụng rrdthreads trực tuyến bằng dịch vụ onworks.net



Các chương trình trực tuyến Linux & Windows mới nhất