2009-02-09 33 views
10

Tôi đang xem số poll()man page và nó cho tôi biết hành vi của poll() khi giá trị dương và âm được chuyển cho tham số thời gian chờ. Nó không cho tôi biết điều gì xảy ra nếu timeout là 0. Bất kỳ ý tưởng nào?Thăm dò ý kiến ​​() làm gì với thời gian chờ là 0?

Nhìn vào epoll_wait()man page, nó nói với tôi rằng với một giá trị thời gian chờ của 0, nó sẽ trở lại ngay lập tức, thậm chí nếu không có sự kiện có sẵn. Có an toàn để giả định rằng poll()sẽ hoạt động giống nhau không?

Trả lời

8

Nó sẽ trở lại ngay lập tức:

Nếu thời gian chờ là lớn hơn không, nó xác định một khoảng thời gian tối đa (trong mili giây) để chờ đợi đối với bất kỳ mô tả tập tin để trở thành sẵn sàng. Nếu thời gian chờ bằng không, thì poll() sẽ trở lại mà không bị chặn. Nếu giá trị thời gian chờ là -1, các khối poll vô thời hạn.

, kể từ Mac OS X 10.5;

Khoảng thời gian tối đa để đợi cuộc thăm dò hoàn thành, tính bằng mili giây. Nếu giá trị này bằng 0, poll() sẽ trả về ngay lập tức. Nếu giá trị này là INFTIM (-1), poll() sẽ chặn vô thời hạn cho đến khi tìm thấy điều kiện.

, tính đến OpenBSD 3.8

0

Từ trang người đàn ông Ubuntu:

Đối số thời gian chờ xác định một giới hạn trên vào thời gian mà cuộc thăm dò() sẽ chặn, trong mili giây. Chỉ định giá trị âm trong thời gian chờ có nghĩa là thời gian chờ vô hạn.

Vì không có trường hợp đặc biệt nào cho 0, tôi giả định rằng cuộc thăm dò() sẽ chặn trong 0 mili giây.

1

Như tôi đã nhìn thấy nó, chờ đợi một thời gian chờ có nghĩa là "có" một thời gian chờ. Bằng cách này tôi sẽ mong đợi rằng thăm dò ý kiến ​​() thực sự kiểm tra các mô tả tập tin, và sau đó chờ đợi nếu không ai sẵn sàng để một thời gian chờ là 0 mili giây (không chờ chút nào). Nhưng trường hợp là nó sẽ chỉ báo hiệu nếu một fd có sẵn.

Tôi cũng kiểm tra mã nguồn Linux và kiến ​​thức của mình, đây là cách nó hoạt động: đầu tiên tính điểm chờ "tương lai", sau đó kiểm tra các bộ mô tả tệp, sau đó nếu không có sẵn, chờ thời gian chờ xác định.

Trân trọng,

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