ekailan 0 Light Poster

I am working on creating windows.h to creat tow threads, each thread takes tow files as input, the function that each thread excute is tested and work 100%,the problem is that one thread could work at atime ?

I mean one function is excuted this is the threading code i dont know what is the problem. I tried to pass different files to each thread but its still not working

//----------------------------------------------
// A function that represents Thread number 1 WM
//----------------------------------------------
DWORD WINAPI Thread_no_1( LPVOID S ) 
{ data_files *My_files = (data_files *)(S);      


    HANDLE  hStdout = NULL;

    // Get Handle To screen. Else how will we print?
    if( (hStdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE )  
		return 1;

    // Cast the parameter to the correct data type passed by callee i.e main() in our case.
    string text=My_files->text;
	string pattern=My_files->pattern;

		fw(text,pattern );
} 
//----------------------------------------------
// A function that represents Thread number 2 AC
//----------------------------------------------
DWORD WINAPI Thread_no_2( LPVOID W ) 
{ data_files *fA_files = (data_files *)(W);      


    HANDLE  hStdout = NULL;

    // Get Handle To screen. Else how will we print?
    if( (hStdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE )  
		return 1;

    // Cast the parameter to the correct data type passed by callee i.e main() in our case.
    string text=aA_files->text;
	string pattern=fA_files->pattern;

		fA(text,pattern );
		
} 


int _tmain(int argc, _TCHAR* argv[]) 

{
	string pattern,text;
    cout<<"Enter patterns file name.\n";
    cin>>pattern;

    cout<<"Enter text file name.\n";
    cin>>text;

   
/////////////////// Threading

    // Data of Thread 1

	data_files *Data_Of_Thread_1=new data_files ;           
    
	Data_Of_Thread_1->text=text;
	Data_Of_Thread_1->pattern=pattern;
    LPVOID S;

    S = (LPVOID)Data_Of_Thread_1;

    //End Data of Thread 1

    // Data of Thread 2
    
	data_files *Data_Of_Thread_2=new data_files ;           
    Data_Of_Thread_2->text=text;
	Data_Of_Thread_2->pattern=pattern;
    LPVOID H;

    H = (LPVOID)Data_Of_Thread_2;

    //End Data of Thread 2
	           
	
	HANDLE Handle_Of_Thread_1 = 0;       // variable to hold handle of Thread 1
	HANDLE Handle_Of_Thread_2 = 0;       // variable to hold handle of Thread 2 
	
 	HANDLE Array_Of_Thread_Handles[2];   // Aray to store thread handles 

 	// Create thread 1.

    Handle_Of_Thread_1 = CreateThread( NULL, 0, Thread_no_1,S, 0, NULL);  
    if ( Handle_Of_Thread_1 == NULL)  ExitProcess(0);
    
	// Create thread 2.
	Handle_Of_Thread_2 = CreateThread( NULL, 0, Thread_no_2,H, 0, NULL);  
    if ( Handle_Of_Thread_2 == NULL)  ExitProcess(0);
    
	

	// Store Thread handles in Array of Thread Handles as per the requirement of WaitForMultipleObjects() 
	Array_Of_Thread_Handles[0] = Handle_Of_Thread_1;
	Array_Of_Thread_Handles[1] = Handle_Of_Thread_2;
	
    
	// Wait until all threads have terminated.
    WaitForMultipleObjects( 2, Array_Of_Thread_Handles, TRUE, INFINITE);

	printf("Since All threads executed close their handles \n");

	// Close all thread handles upon completion.
    CloseHandle(Handle_Of_Thread_1);
    CloseHandle(Handle_Of_Thread_2);
	





}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.