1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hỏi đáp Xử lý Multi-Thread trong Autoit

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi Phund, 19/9/17.

Tags:
  1. Phund

    Phund Thành viên mới
    • 3/6

    Tham gia ngày:
    19/9/17
    Bài viết:
    12
    Đã được thích:
    4
    Dear các bạn, nhờ các bạn giúp mình. Vấn đề của mình liên quan đến multi-thread như sau:

    1. Tiến trình chính là search và hit mob
    2. trong lúc loop để tìm và hit mob, HP bị xuống thấp và cần tạm dừng tiến trình chính để thực hiện tiến trình phụ là bơm HP.
    3. sau đó tiếp tục tiến trình chính đang dở dang
    mình đã tìm trên diễn đàn này cũng như một số diễn đàn khác thì thấy có UDF là CoProc phục vụ việc trên nhưng có lẽ do UDF đó đã cũ hoặc version hiện tại của win của autoit không support nữa hay sao mà UDF lỗi và mình ko debug đc lỗi của UDF đó.

    Vậy cho mình hỏi các bạn hiện có gặp và xử lý vấn đề này thế nào, giúp mình với
     
    Nguyen Hau thích bài này.
  2. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    634
    Đã được thích:
    1,113
    Coproc Fixed + Example ở file đính kèm bên dưới.
     

    Các file đính kèm:

    emga9xkc thích bài này.
  3. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    634
    Đã được thích:
    1,113
    iêm tóm tắt về cách sử dụng coproc thế này:
    - Tạo proc con: Dễ
    - Proc chính và các Proc con phải được đính _CoProc_Reciver vào. _CoProc_Reciver được nạp tham số là 1 "hàm nhận", "hàm nhận" này sẽ liên tục quét tín hiệu trao đổi giữa Proc mẹ và Proc con, và lưu ý là "hàm nhận" phải được định nghĩa với 1 tham số cho nó (trong code mẫu là $vParam đó), các data gửi nhận sẽ được truyền qua $vParam này:v

    Proc mẹ:
    _CoProc_Reciver('Ham_Me_Nhan')

    .....

    Proc con:
    _CoProc_Reciver('ham_Con_Nhan')

    .....

    Func Ham_Me_Nhan($vparam1)

    Endfunc

    Func Ham_Con_Nhan($vparam2)

    Endfunc

    Ví dụ thým Dùng _CoProcSend để gửi data từ Proc mẹ đến Proc Con thì $vparam2 khi này sẽ chứa data đó :v

    iêm nói linh tinh lang tang quá không biết thým hiểu không nữa =.="
     
    emga9xkc thích bài này.
  4. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    634
    Đã được thích:
    1,113
    Ủa, mà đọc kỹ lại cái quy trình thì đâu cần multi proc nhể: "trong lúc loop để tìm và hit mob, HP bị xuống thấp và cần tạm dừng tiến trình chính để thực hiện tiến trình phụ là bơm HP." => Vậy là thằng chính với phụ đâu cần hoạt động song song nhau => Code bình thường thôi mà:

    While 1
    tìm + hit mob + check HP
    If HP xuống Then _Bom_HP()​
    WEnd

    Func Bom_HP()
    .....
    EndFunc
     
    emga9xkc thích bài này.
  5. Phund

    Phund Thành viên mới
    • 3/6

    Tham gia ngày:
    19/9/17
    Bài viết:
    12
    Đã được thích:
    4
    cảm ơn đã trả lời nhiệt tình, mình sẽ thử cái CoProc bạn post.
    btw, case này chỉ là ví dụ vì có một số trường hợp các proc phải communicate với nhau để tìm điều kiện xử lý.
    Ví dụ nhé: có process:
    • bật invent
    • chọn scroll
    • tele lên map
    • move ra bãi
    • farm
    đang đi giữa đường thì tắc đường và có process xử lý tắc đường.
    Vậy nếu ko có sự giao tiếp và lưu quá trình thực hiện dở dang thì cứ đến step [move ra bãi] rồi tắc, rồi lại ăn scroll tele :D
     
  6. sangqc001

    sangqc001 Thành viên mới
    • 3/6

    Tham gia ngày:
    30/4/17
    Bài viết:
    13
    Đã được thích:
    1
    bác @Phund cho e xin facebook e hỏi chút về process đc ko?
     
  7. TungNhoc

    TungNhoc Thành viên mới
    • 1/6

    Tham gia ngày:
    15/8/18
    Bài viết:
    11
    Đã được thích:
    0
    Em xin lỗi vì đã đào mộ lên , nhưng em đang gặp trục trặc . Bác Huân giúp em với
    Em muốn hàm mẹ truyền dữ liệu sang hàm con , và sau khi hàm con chạy xong sẽ gửi dữ liệu lại về hàm mẹ .Từ hàm mẹ truyền kí tự "OK1" vào hàm con thì được .Còn hàm con truyền về hàm mẹ thì chưa được . Em để inputbox ở hàm con để gửi dữ liệu về hàm mẹ nhưng cũng ko được . Nhưng lạ cái em để thêm cái Msgbox (0,0,$s) trong hàm mẹ thì lại được . Bác Huân giúp em với ạ . Em cám ơn bác
    Nội dung bị ẩn:
    **Nội dung ẩn: Nội dung của khối ẩn này chỉ có thể được nhìn thấy bởi các thành viên của (các nhóm: nhóm Administrative, Moderating, Registered). **
     
    Chỉnh sửa cuối: 4/3/19
  8. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    634
    Đã được thích:
    1,113
    Code của thým lẫn cái vụ Msgbox mà thým đề cập là hoàn toàn đúng rồi, vì nếu thým không để cái Msgbox thì Proc mẹ sẽ bị tắt ngay sau khi chạy dòng $s = _CoProc_Create('Work', 'OK1') rồi, mà bị tắt rồi thì sao nhận gì từ thằng Proc con nữa. Chính cái Msgbox đó đã giữ cho Proc mẹ không bị tắt :v
     
  9. TungNhoc

    TungNhoc Thành viên mới
    • 1/6

    Tham gia ngày:
    15/8/18
    Bài viết:
    11
    Đã được thích:
    0
    À em hiểu rồi . Do mới nghiêm cứu Proc này nên còn mơ hồ . Em cám ơn bác . Chúc bác nhiều sức khỏe ạ
     

Chia sẻ trang này

Đang tải...