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

Đề tài: Tài liệu về multi thread trong C/C++?

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    258

    Mặc định Tài liệu về multi thread trong C/C++?

    bạn nào có tài liệu về multi thread trong c++ cho minh xin với.mình đang nghiên cứu về nó mà toàn tài liệu bằng java thôi.cảm ơn các bạn.hì

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn vào MSDN xem hàm CreateThread
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    10 2008
    Bài viết
    258

    không biết là có cần thư viện gì không?chứ mình làm giống như trong MSDN những toàn báo lỗi thôi!

    thank! minh lam duoc roi! cam on ban nhieu.

  4. #4
    Ngày gia nhập
    02 2009
    Bài viết
    34

    mình đã làm trương trình dùng multi-threads trên c++ dùng afxwin cái này trong thư viện MFC nói chung khá là đơn giản.

  5. #5
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nội
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi sovietw0rm Xem bài viết
    mình đã làm trương trình dùng multi-threads trên c++ dùng afxwin cái này trong thư viện MFC nói chung khá là đơn giản.
    mình đang tìm hiểu về phần này. nhưng còn mù mờ quá. bạn có thể nói rõ hơn được ko? hoặc bạn có thể cho mình xin code đơn giản về multithread được không? cảm ơn bạn nhiều

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

    Mặc định Tài liệu về multi thread trong C/C++?

    Trích dẫn Nguyên bản được gửi bởi hieuhc Xem bài viết
    mình đang tìm hiểu về phần này. nhưng còn mù mờ quá. bạn có thể nói rõ hơn được ko? hoặc bạn có thể cho mình xin code đơn giản về multithread được không? cảm ơn bạn nhiều
    Bạn thử chạy cái này coi

    Có 3 thread.
    Thread 1: đẩy vào queue 1 số tự nhiên lẻ trong khoảng 1, .., 10
    Thread 2: đẩy vào queue 1 số tự nhiên chẵn trong khoảng 1, .., 10
    Thread 3: Lấy trong queue ra 1 số tự nhiên ở đầu và in ra màn hình (in xong xóa số đó trong queue)

    Bấm P để tạm dừng chương trình
    Bấm C để tiếp tục chương trình
    Bấm ESC để thoát khỏi chương trình.

    C Code:
    1. #include <windows.h>
    2. #include <queue>
    3. #include <conio.h>
    4. #include <stdio.h>
    5. #include <tchar.h>
    6.  
    7. using namespace std;
    8.  
    9. typedef queue<int> queue_int;
    10.  
    11. unsigned long __stdcall Thread1(void* param);
    12. unsigned long __stdcall Thread2(void* param);
    13. unsigned long __stdcall Thread3(void* param);
    14.  
    15. void* handler_thread1 = 0;
    16. void* handler_thread2 = 0;
    17. void* handler_thread3 = 0;
    18.  
    19. int   running1, running2;
    20.  
    21. void* mutex;
    22. queue_int integer_queue;
    23. unsigned int number = 0;
    24. ///////////////////////////////////////////////////////
    25. int _tmain(int argc, _TCHAR* argv[])
    26. {
    27.  
    28.     //HWND hwnd = GetConsoleWindow();
    29.     mutex = CreateMutex(0, false, 0);
    30.    
    31.     unsigned long id_thread;
    32.     handler_thread1 = CreateThread(0, 0, Thread1, 0, 0, &id_thread);
    33.     if(!handler_thread1)
    34.     {
    35.         printf("Cannot create thread1. Error code = %d\n", GetLastError());
    36.         getch();
    37.         return -1;
    38.     }
    39.     handler_thread2 = CreateThread(0, 0, Thread2, 0, 0, &id_thread);
    40.     if(!handler_thread2)
    41.     {
    42.         printf("Cannot create thread2. Error code = %d\n", GetLastError());
    43.         running1 = 0;
    44.         WaitForSingleObject(handler_thread1, INFINITE);
    45.         getch();
    46.         return -1;
    47.     }
    48.     handler_thread3 = CreateThread(0, 0, Thread3, 0, 0, &id_thread);
    49.     if(!handler_thread3)
    50.     {
    51.         printf("Cannot create thread3. Error code = %d\n", GetLastError());
    52.         running1 = 0;
    53.         running2 = 0;
    54.         WaitForSingleObject(handler_thread2, INFINITE);
    55.         getch();
    56.         return -1;
    57.     }
    58.  
    59.     WaitForSingleObject(handler_thread3, INFINITE);
    60.    
    61.     printf("\nEnd Thread3\n");
    62.     CloseHandle(handler_thread1);
    63.     CloseHandle(handler_thread2);
    64.     CloseHandle(handler_thread3);
    65.    
    66.     printf("\n\nExit program\n");
    67.     Sleep(1000);
    68.     return 0;
    69. }
    70. ///////////////////////////////////////////////////////
    71. unsigned long __stdcall Thread1(void* param)
    72. {
    73.     running1 = 1;
    74.     while(running1)
    75.     {
    76.         WaitForSingleObject(mutex, INFINITE);
    77.         if(!(number % 2))
    78.         {
    79.             integer_queue.push(number++ % 10 + 1);          
    80.         }
    81.         ReleaseMutex(mutex);
    82.     }
    83.     printf("\nEnd Thread1\n");
    84.     return 0;
    85. }
    86. ///////////////////////////////////////////////////////
    87. unsigned long __stdcall Thread2(void* param)
    88. {
    89.     running2 = 1;
    90.     while(running2)
    91.     {
    92.         WaitForSingleObject(mutex, INFINITE);
    93.         if(number % 2)
    94.         {
    95.             integer_queue.push(number++ % 10 + 1);
    96.         }
    97.         ReleaseMutex(mutex);        
    98.     }
    99.     WaitForSingleObject(handler_thread1, INFINITE);
    100.     printf("\nEnd Thread2\n");
    101.     return 0;
    102. }
    103. unsigned long __stdcall Thread3(void* param)
    104. {
    105.     while(1)
    106.     {
    107.         WaitForSingleObject(mutex, INFINITE);
    108.         if(!integer_queue.empty())
    109.         {
    110.             int n = integer_queue.front();
    111.             printf("%4d", n);
    112.             if(n && n % 10 == 0)
    113.                 printf("\n");
    114.             integer_queue.pop();
    115.         }
    116.         if(kbhit())
    117.         {
    118.             char key = getch();
    119.             switch(key)
    120.             {
    121.             case 'P':
    122.             case 'p':
    123.                 {
    124.                     while(1)
    125.                     {
    126.                         if(kbhit())
    127.                         {
    128.                             char key_in = getch();
    129.                             if(key_in == 'C' || key_in == 'c' )
    130.                                 break;
    131.                             else if(key_in == 0x1B)
    132.                             {
    133.                                 running1 = 0;
    134.                                 running2 = 0;
    135.                                 ReleaseMutex(mutex);
    136.                                 WaitForSingleObject(handler_thread2, INFINITE);
    137.                                 return 0;
    138.                             }                          
    139.                         }
    140.                     }
    141.                 }
    142.                 break;
    143.             case 0x1B:
    144.                 {
    145.                     running1 = 0;
    146.                     running2 = 0;
    147.                     ReleaseMutex(mutex);
    148.                     WaitForSingleObject(handler_thread2, INFINITE);
    149.                 }
    150.                 return 0;
    151.             default:
    152.                 break;
    153.             }
    154.         }
    155.         else
    156.             Sleep(1);
    157.         ReleaseMutex(mutex);
    158.     }
    159.     printf("\nEnd Thread3\n");
    160.     return 0;
    161. }
    Đã được chỉnh sửa lần cuối bởi athena_hip : 04-10-2010 lúc 01:45 PM.

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

    Các bạn có thể gợi ý cho mình bài này !!!!!!!!!
    Viết chương trình Multi Thread cho bài toán: Đọc vào 1 dãy A từ File, và dùng n thread sắp xếp dãy theo thứ tự tăng dần
    +Mỗi Thread lấy một phần tử của dãy A và sắp xếp theo thứ tự tăng dần
    +Sau đó 1 Thread trộn các dãy do các Thread vừa rồi đã sắp xếp thành dãy kết quả.


    Cảm ơn!

  8. #8
    Ngày gia nhập
    02 2009
    Bài viết
    35

    C/C++ có khả năng can thiệp vào các tiến trình đang chạy ko nhỉ, kiểu như cấm ko cho chạy YH, Chrome trc 9h đêm vậy (phải học bài trc), bạn nào có tài liệu nói về điều này cho mình xin nhé
    thương dân như con

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

  1. Giới thiệu thread và multi thread trong lập trình C#
    Gửi bởi dieucay555 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 26-07-2011, 06:16 PM
  2. Rắc rối với multi thread trong việc thu/phát âm.
    Gửi bởi Joker trong diễn đàn Thắc mắc chung
    Trả lời: 1
    Bài viết cuối: 29-03-2011, 10:14 PM
  3. Lỗi khi dùng multi thread để vẽ trong lập trình C#?
    Gửi bởi tuandoi1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 20-11-2010, 04:39 AM
  4. Tài liệu lập trình C++ Cho xin tài liệu về lập trình multi thread trong C nền tảng Win32
    Gửi bởi hahaha12a2 trong diễn đàn Tài liệu, ebooks và công cụ
    Trả lời: 0
    Bài viết cuối: 12-11-2010, 04:35 PM
  5. Chống xung đột Multi - Thread Trong VC++ API
    Gửi bởi thansautk trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 12
    Bài viết cuối: 23-08-2010, 01:37 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