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

Đề tài: Truyền tham số vào hàm trong lập trình Thread, cần giúp đỡ.

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

    Mặc định Truyền tham số vào hàm trong lập trình Thread, cần giúp đỡ.

    Đề bài muốn mình tìm vị trí của phần tử trong mảng, mảng cho trước, code của em nó bị lỗi ở đoạn truyền tham số, mấy pro giúp đỡ em với nha
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <afxwin.h>
    
    DWORD WINAPI timsonguyen(LPVOID n,LPVOID a[100]);
    
    void main()
    {
    	int a[100],n;
    	printf("nhap so phan tu cua mang n: ");
    	scanf("%d",&n);
    	for(int i=0;i<n;i++)
    	{
    		printf("a[%d] = ",i);
    		scanf("%d",&a[i]);
    	}
    	HANDLE hThread1;
    	DWORD IdThread1;
    	hThread1 = CreateThread(NULL,0,timsonguyen,NULL,0,&IdThread1);
    	getch();
    }
    
    DWORD WINAPI timsonguyen(LPVOID n,LPVOID a[100])
    {
    	int x;
    	printf("so nguyen can tim: ");
    	scanf("%d", &x);
    	for(int i=0;i<n;i++)
    		if(x==a[i])
    			printf("vi tri cua so nguyen %d la: a[%d]", x,i);
    	return 0;
    }

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

    Hàm Thread chỉ cho truyền duy nhất 1 tham số thôi. Bạn phải dùng 1 struct đóng gói hết cả những gì muốn truyền và truyền con trỏ của struct đó vào cho hàm thread.
    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 2011
    Bài viết
    12

    cụ thể là làm sao vậy bạn? Bạn có thể hướng dẫn chi tiết hơn được không vậy? tks bạn!

  4. #4
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    ví dụ muốn trong thread xử lý cả 3 biến a , b , c thì làm kiểu thế này
    Visual C++ Code:
    1. #include <stdio.h>
    2. #include <windows.h>
    3. //declare struct
    4.  
    5. typedef struct _tagTHREADPARAM
    6. {
    7.     int a;
    8.     char b;
    9.     long c;
    10. } THREADPARAM, *PTHREADPARAM;
    11.  
    12. // Declare global variable
    13.  
    14. THREADPARAM g_ThreadParameter;
    15.  
    16. //Declare thread function
    17. DWORD WINAPI MiniFunction(LPVOID lpParam)
    18. {
    19.     PTHREADPARAM pParam = (PTHREADPARAM) lpParam;
    20.    
    21.     printf("%d %c %ld", pParam->a, pParam->b, pParam->c);
    22.     return 0;
    23. }
    24.  
    25. int main ()
    26. {
    27.     //initialize values
    28.     g_ThreadParameter.a = 1;
    29.     g_ThreadParameter.b = 'a';
    30.     g_ThreadParameter.c = 100;
    31.    
    32.     HANDLE hThread = CreateThread( NULL, 0, MiniFunction, &g_ThreadParameter, 0, NULL ) ; //start a new thread.
    33.    
    34.     if(hThread != NULL)
    35.         WaitForSingleObject( hThread, INFINITE ); //Waits until the thread terminates.
    36.    
    37.     return 0;
    38. }

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    12

    thanks nhiều nhé ( mình tìm nút thank hok ra )... mình sẽ tìm hiểu thêm về vấn đề này...

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

  1. Cách truyền tham số cho một thread như thế nào ?
    Gửi bởi leemanhj916 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 16-10-2015, 03:33 PM
  2. Sửa giúp lỗi Cross-Thread trong bài truyền nhận file qua mạng LAN
    Gửi bởi faq.c trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 10-12-2012, 07:15 AM
  3. Kỹ thuật C Truyền tham số cho Thread trong lập trình WIN32 API?
    Gửi bởi ductrongcp trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 03-05-2011, 08:22 PM
  4. MFC Cách Truyền Tham số vào Thread ???
    Gửi bởi haian trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 14-03-2009, 12:42 PM
  5. Cách truyền tham số cho hàm trong C. Giúp mình?
    Gửi bởi singO2 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 23-12-2006, 03:14 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