Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Thực thi nhiều command cùng 1 lúc từ nhiều luồng ?

  1. #1
    Ngày gia nhập
    05 2010
    Bài viết
    347

    Mặc định Thực thi nhiều command cùng 1 lúc từ nhiều luồng ?

    Xin chào mọi người. Nếu tiêu đề topic không phù rõ ràng mong mod bỏ qua cho.
    Hiện bây giờ em đang gặp vấn đề như sau.
    Ứng dụng của em chạy nhiều luồng để client connect tới, mỗi khi client connect thành công thì luồng đó chạy 1 command, và nếu ứng dụng đó bị ngắt kết nối thì luồng đó cũng chạy 1 command rồi mới tự hủy. Nhưng nếu có nhiều client cùng bị ngắt cùng 1 lúc thì nó thực thi command ko đúng vậy mọi người cho em hỏi có cách nào để thực thi từng command không. (Em có 1 lớp để thực thi command).
    Chủ đề này đã có rồi nhưng mà vẫn chưa ai giải quyết được cả. Mong mọi người giúp đỡ

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Cái bạn cần làm là một thread queue, vấn đề này nói chung là vấn đề khá cơ bản trong lập trình network, quan trọng là bạn cần phải có một nền tảng vững bạn sẽ dễ dàng xử lý được!

    Khi ngắt kết nối, nhưng server vẫn phải nhận được đủ dữ liệu mới có thể làm tiếp. Còn nếu bạn muốn server chưa nhận đủ dữ liệu và vẫn có thể thực hiện thì bạn cần thêm một module "phần mềm chạy cơm" nữa.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    - để tránh Server bị Dos, overload thì bạn nên sử dụng cơ chế Thread Pool hay Thread queue, qui định max thread pool, max thread pool tùy vào khả năng xử lí của server
    - Client có client ID thì sao sợ nhầm lẫn ???
    - check client teo hay chưa :
    + cứ mỗi khoảng time, gửi tín hiệu gì đó lên server
    + cứ mỗi khoảng time, server kiểm tra xem client có gửi thông tin lên ko, nếu quá time out ko có thì coi như client đã teo

  4. #4
    Ngày gia nhập
    05 2010
    Bài viết
    347

    Trích dẫn Nguyên bản được gửi bởi Kevin Hoang Xem bài viết
    Cái bạn cần làm là một thread queue, vấn đề này nói chung là vấn đề khá cơ bản trong lập trình network, quan trọng là bạn cần phải có một nền tảng vững bạn sẽ dễ dàng xử lý được!

    Khi ngắt kết nối, nhưng server vẫn phải nhận được đủ dữ liệu mới có thể làm tiếp. Còn nếu bạn muốn server chưa nhận đủ dữ liệu và vẫn có thể thực hiện thì bạn cần thêm một module "phần mềm chạy cơm" nữa.
    Em cảm ơn em sẽ tìm hiểu thêm.

    Trích dẫn Nguyên bản được gửi bởi zstar Xem bài viết
    - để tránh Server bị Dos, overload thì bạn nên sử dụng cơ chế Thread Pool hay Thread queue, qui định max thread pool, max thread pool tùy vào khả năng xử lí của server
    - Client có client ID thì sao sợ nhầm lẫn ???
    - check client teo hay chưa :
    + cứ mỗi khoảng time, gửi tín hiệu gì đó lên server
    + cứ mỗi khoảng time, server kiểm tra xem client có gửi thông tin lên ko, nếu quá time out ko có thì coi như client đã teo
    Đúng là mỗi client có một đoạn string data để đưa vào command để xử lý, nhưng cứ nhiều luồng cùng nhảy vào hàm thưc thi command là y răng sinh ra lỗi, các lỗi như em đã nói ở trên. Có lẽ phải cho các command hoặc luồng vào queue để xử lý tuần tự. Thêm nữa là cái chuyện bắt sự kiện client bị disconnect anh "zstar" có cách nào bắt nó không, em sử bắt try catch trong dòng đọc dữ liệu từ client vì client bị ngắt kết nối sẽ sinh ra exception ở dòng đó.

  5. #5
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    đơn giản là mỗi client em lưu lại last time (thời điểm gửi tin xác nhận alive)
    mỗi lần nó gửi tin xác nhận alive sẽ update lại last time
    server chỉ việc so sánh : lấy time hiện tại trừ đi last time, nếu quá time out thì coi như client đã teo

    gửi tin xác nhận cho server chỉ cần gửi đơn giản 1 kí tự bất kì thôi

  6. #6
    Ngày gia nhập
    05 2010
    Bài viết
    347

    Mặc định Thực thi nhiều command cùng 1 lúc từ nhiều luồng ?

    Trích dẫn Nguyên bản được gửi bởi zstar Xem bài viết
    đơn giản là mỗi client em lưu lại last time (thời điểm gửi tin xác nhận alive)
    mỗi lần nó gửi tin xác nhận alive sẽ update lại last time
    server chỉ việc so sánh : lấy time hiện tại trừ đi last time, nếu quá time out thì coi như client đã teo

    gửi tin xác nhận cho server chỉ cần gửi đơn giản 1 kí tự bất kì thôi
    Ứng dụng của em thì mở rất nhiều luồng, em chỉ muốn 1 client chỉ dùng đến 1 luồng thồi. Mà em không nghĩ ra cách nào để vừa đếm time vừa chờ packet đến từ client. Anh có cách nào thực hiện 2 công việc đó trên 1 luồng không. Em cảm ơn anh.(Ứng dụng client của em bằng VB6 nếu mà thoát ứng dụng đó thì nó sẽ tự send 1 packet null, nhưng mà nếu nó bị out mạng thì trên server dòng lệnh đọc packet ko tạo ra Exception(em bắt try catch ở câu lệnh này để nhận biết client bị ngắt kết nối), nhưng nếu ứng dụng client mà code bằng C# thì khi ngắt kết nối thì sinh ra Exception để server biết ngay).
    Đã được chỉnh sửa lần cuối bởi tuandoi1 : 19-01-2012 lúc 03:34 PM.

  7. #7
    Ngày gia nhập
    05 2010
    Bài viết
    347

    upppppppppppp, ai giúp mình thuật toán này với
    Đã được chỉnh sửa lần cuối bởi tuandoi1 : 26-01-2012 lúc 10:42 PM.

  8. #8
    Ngày gia nhập
    05 2010
    Bài viết
    347

    Đầu xuân giúp nhau để gặp nhiều may mắn hii

  9. #9
    Ngày gia nhập
    04 2011
    Nơi ở
    TP Đà Lạt
    Bài viết
    30

    mình cũng ko rành lắm, cần học hỏi nhiều

Các đề tài tương tự

  1. tư vấn cách học nhiều ngôn ngữ lập trình cùng một lúc
    Gửi bởi kimcy1992 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 11-01-2013, 10:28 AM
  2. Focus chuột vào nhiều cửa sổ ( dạng viết auto game nhiều cửa sổ cùng lúc )
    Gửi bởi hoanghiep9x trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 13-07-2012, 10:28 PM
  3. Database lưu nhiều hình ảnh cùng lúc vào database
    Gửi bởi kimchungno1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 05-08-2011, 07:49 PM
  4. ADO.NET Dữ liệu sắp xếp lộn xộn khi chèn nhiều dữ liệu cùng 1 lúc vào sql
    Gửi bởi tuandoi1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 26-07-2011, 02:16 PM
  5. ADO.NET Bị lỗi thực hiện câu lệnh update khi nhiều luồng cùng chạy câu lệnh cùng một lúc
    Gửi bởi tuandoi1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 20-07-2011, 06:51 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn