2014-10-08 17 views
6

Tôi đã profiling mã của tôi với mutrace và có thú vị/kết quả đáng lo ngại sau:Stack có thực sự yêu cầu khóa không?

Mutex #1260690 (0x0x7f87bc8eea40) first referenced by: 
    /usr/lib/mutrace/libmutrace.so(pthread_mutex_lock+0x49) [0x7f87be0b76b9] 
    /lib/x86_64-linux-gnu/libgcc_s.so.1(_Unwind_Find_FDE+0x26) [0x7f87bc6eb0e6] 

mutrace: Showing 10 most contended mutexes: 

Mutex # Locked Changed Cont. tot.Time[ms] avg.Time[ms] max.Time[ms] Flags 
1260690 19066789 1509831 109753  3600.883  0.000  0.226 M-.--. 

Các _Unwind_Find_FDE dường như phải đối phó với chồng ươm.

Ứng dụng của tôi rất đa luồng với các yêu cầu độ trễ khá nghiêm ngặt và vì vậy tôi muốn loại bỏ điều này dễ dàng nhất có thể. Có bất kỳ trình biên dịch hoặc môi trường cài đặt tôi có thể sử dụng để thoát khỏi cuộc gọi chức năng này, mà không cần viết lại mã của tôi? Chúng ta sử dụng các ngoại lệ cho một phần của điều khiển luồng (có lẽ là không chính xác) nhưng nó sẽ là một công việc tái cấu trúc lớn để sửa lỗi đó.

g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2 
+2

_ "Chúng tôi sử dụng ngoại lệ cho một phần của điều khiển luồng" _ sau đó bạn phải trả giá đó (và bạn may mắn không ai ném đá vào cửa sổ của bạn LOL) –

+4

Thật không may tôi nghĩ bạn sẽ có để sửa lỗi của bạn và không sử dụng ngoại lệ cho điều khiển luồng trong đường dẫn nóng. Bất cứ điều gì khác sẽ là một hack. –

+3

Ngoại lệ nên * không * là một phần của luồng chương trình thông thường, chúng được cho là * ngoại lệ *. Và nếu bạn ném ngoại lệ, yêu cầu độ trễ nghiêm ngặt của bạn có thể không thực sự nghiêm ngặt bởi vì việc mở thư giãn thường không hiệu quả lắm. –

Trả lời

-3

Dừng sử dụng ngoại lệ nếu bạn cần độ trễ thấp.

+0

Ngoại lệ không ảnh hưởng đến thời gian chạy nếu chúng không bị ném. Độ trễ thấp có thể đạt được một cách an toàn với ngoại lệ. – Alex

+0

Ngừng sử dụng các ngoại lệ "chậm" nếu chúng vượt quá các yêu cầu về độ trễ của bạn. Việc triển khai tốt không cần phải có ngoại lệ "chậm". Nếu việc triển khai của bạn không tốt, thì, tốt, ... –

Các vấn đề liên quan