2009-11-29 34 views

Trả lời

7

fork(2) là kludgey trong Cygwin, vì mô hình quy trình Windows không dễ dàng cho phép điều đó xảy ra. Cygwin có thể cho phép đẻ trứng của nó sử dụng nó, nhưng bạn sẽ bị ảnh hưởng nghiêm trọng khi Cygwin phải thi đua mọi thứ bằng tay - bao gồm sao chép dữ liệu thực thi, sao chép các chốt mở, v.v.

Tùy thuộc vào cách thức nhiều shotgun sử dụng fork(2), mô phỏng này có thể gây đau đớn hoặc nó có thể tương đối nhỏ.

Đây là số good thread on GameDev.net thảo luận về việc thiếu cơ sở fork trên Win32. Họ mang đến một thứ gì đó mà tôi không có sự kiên nhẫn hoặc khả năng tiếp cận nền tảng để điều tra, nhưng chắc chắn có vẻ vui vẻ, nguy hiểm và nổ cùng một lúc:

Vì vậy, bạn cần phải bỏ qua Win32 và gọi người bản địa API ({Nt | Zw} CreateProcess). Cuốn sách "Windows Nt/2000 Native Api Reference" có một ví dụ "Forking a Win32 Process". Đây có thể là những gì bạn cần.

Tôi tò mò, nhưng tôi nghi ngờ Cygwin sử dụng nó. Nó có thể ở đó, để nhắc lại câu trả lời của tôi cho câu hỏi của bạn - rất nhiều ứng dụng Unix dựa trên fork và Cygwin có khả năng làm cho nó khả dụng. Chỉ cần không mong đợi phép lạ, và bạn sẽ phải làm cho Ruby nhận thức được Cygwin bằng cách biên dịch lại nó để bao gồm lớp mô phỏng của nó.

+0

Trả lời tuyệt vời! Tôi sẽ thử biên dịch lại Ruby với lớp mô phỏng Cygwin vào ngày mai. Nếu nó hoạt động, điều đó thật tuyệt vời; một số hit hiệu suất sẽ là ok. Con đường khác âm thanh nguy hiểm, và nó sẽ đòi hỏi rất nhiều hack ... nhưng nó là tốt để biết những gì có thể. Cảm ơn nhiều! – picardo

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