2010-09-01 45 views
5

Tôi thường nghe nói về "xử lý", chính xác là những gì?Chính xác thì "xử lý" là gì?

Edit: Ví dụ tôi đã nghe nói về: cửa sổ xử lý sự kiện xử lý tập tin xử lý

và vân vân. Những thứ đó có giống nhau không? Hoặc họ là một số thuật ngữ trừu tượng?

+0

Ngữ cảnh mà bạn đã nghe cụm từ đó là gì? Đó là một thuật ngữ rất chung chung và có nhiều ý nghĩa. –

+0

Bản sao có thể có của: http://stackoverflow.com/questions/1303123/what-is-a-handle-in-c –

Trả lời

5

Xử lý là cách gián tiếp để tham chiếu một đối tượng thuộc sở hữu của hệ điều hành hoặc thư viện. Khi hệ điều hành hoặc thư viện sở hữu một đối tượng nhưng muốn cho phép một máy khách tham chiếu đến nó, nó có thể cung cấp một tham chiếu tới đối tượng đó được gọi là một xử lý.

Xử lý có thể được triển khai theo nhiều cách khác nhau. Thông thường, chúng không phải là các tham chiếu trong C++ hoặc C#. Thường thì chúng là các con trỏ được truyền tới một số kiểu mờ, hoặc chúng có thể là (hoặc chứa) một chỉ mục thành một bảng các đối tượng thuộc sở hữu của hệ điều hành hoặc thư viện.

Ví dụ, trong Windows, nếu bạn tạo một cửa sổ, hệ điều hành sẽ tạo một đối tượng đại diện cho cửa sổ, nhưng nó không trả về một con trỏ tới đối tượng đó. Thay vào đó, nó trả về một cửa sổ xử lý, cung cấp thêm một lớp indirection. Khi bạn vượt qua cửa sổ xử lý trở lại trong một cuộc gọi hệ điều hành khác, hệ điều hành biết đối tượng cửa sổ để sử dụng dựa trên xử lý. Điều này ngăn cản mã của bạn truy cập trực tiếp vào đối tượng cửa sổ.

Lớp bổ sung cho phép hệ điều hành hoặc thư viện làm những việc như di chuyển đối tượng xung quanh, tham chiếu đếm đối tượng và thường kiểm soát những gì xảy ra với đối tượng. Giống như thành ngữ PIMPL, việc triển khai có thể thay đổi hoàn toàn trong khi vẫn giữ nguyên API ban đầu và do đó không buộc khách hàng phải biên dịch lại. Điều này đặc biệt hữu ích nếu bạn đang cố gắng cung cấp API không hướng đối tượng cho khách hàng được viết bằng ngôn ngữ thủ tục như C.

1

Xử lý là các con trỏ đến các tài nguyên không được quản lý như xử lý tệp, xử lý kết nối cơ sở dữ liệu, xử lý cửa sổ, v.v ... Vì chúng được xử lý cho tài nguyên không được quản lý trong hầu hết các trường hợp, chúng sẽ không được thu gom rác tự động và bạn cần đảm bảo đúng cách giải phóng chúng hoặc bạn có thể nghe về xử lý rò rỉ.

+0

+1 Trong hệ điều hành windows, chúng thường là 2byte số nguyên và trong mã được quản lý mà bạn có thể sử dụng chúng IntPtr. – Jalal

+1

Chúng không nhất thiết là con trỏ, mặc dù chúng có thể là _can_. Chúng là số nhận dạng mờ đục. –

5

Một "tay cầm" là tên khác để tham chiếu vào tài nguyên được quản lý bởi lập trình viên thay vì tự động theo thời gian chạy.

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