2011-09-29 23 views
5

Tôi sẽ gặp lỗi nếu tôi tạo một pthread_create bên trong một pthread, được tạo ra bởi chức năng chính. Nếu, tôi có thể sau đó tất cả những gì tôi nên chăm sóc ???Tôi có thể tạo một pthread bên trong một pthread, mà đã được tạo ra bởi chính?

Quan trọng ....: Tôi đang thực hiện lập trình socket, nơi tôi đã mở 5 luồng trên mỗi cổng riêng biệt đang lắng nghe trên cổng, khi nào tôi nhận được tin nhắn, tôi muốn tạo một chuỗi nhận thông báo và viết vào một tập tin bằng cách sử dụng pwrite. Vì vậy, tôi có một vài câu hỏi, xin vui lòng bạn có thể giúp tôi?

Nếu không thì giải pháp tạo chuỗi khác bên trong chuỗi là gì? ??

Hoặc nó sẽ cho tôi một lỗi phân đoạn ???

hoặc tôi sẽ chạy vào một số điều kiện chủng tộc ....

+1

Có, bạn có thể thực hiện việc này. –

Trả lời

4

pthread_create tạo ra một chủ đề mới. Độc lập với nơi được gọi là . Và tạo ra một chuỗi mới cho một kết nối khi nghe trên một cổng là khá nhiều thủ tục tiêu chuẩn.

+0

Nhưng, câu hỏi của tôi là tôi đã lấy dữ liệu từ chủ đề recv và gửi nó như là một sự tranh cãi cho các chủ đề được tạo ra sau khi recv .... Bây giờ là có 5 chủ đề đồng thời lắng nghe, nó sẽ không tạo ra một điều kiện chủng tộc trong nhận được gói ..... – Invictus

+0

@Invictus Bất kể bạn tạo chủ đề ở đâu, bạn phải tuân thủ các quy tắc thông thường về an toàn luồng. Rất nhiều phụ thuộc vào cách bạn đang "lắng nghe" bằng cách sử dụng 'chấp nhận', mỗi trả về' int' là một ổ cắm riêng biệt, có thể được chuyển đến chủ đề con mà không có vấn đề gì. Nếu bạn đang xử lý một kết nối UDP, và lắng nghe bằng cách sử dụng 'recvfrom', bạn nên cấp phát một bộ đệm mới cho mỗi cuộc gọi và chuyển bộ đệm đã nhận đến chuỗi con, có thể giải phóng nó khi nó được thông qua. Trong cả hai trường hợp, mỗi luồng phải nghe một cổng (cổng) khác nhau. –

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