Skip to main content

Thread Synchronization part one

There is two kinds of Synchronization:-
1.Synchronization in same process
    eq.Critical section
2.Synchronizaiton in different process
   eq. CEvent,Mutex,SemaPhore


1.Critical Section:-
     It is same as a Mutex,but difference between them is Mutex can Synchronization different process where as Critical Section work in to the same process..Critical section is fastest Synchronization object compare of the other ,because it work in same process.
CRITICAL_SECTTION m_cs;
InitializeCriticalSection(&m_cs);
void threadfirst()
{
EnterCriticalSection(&m_cs);
........

.........
LeaveCriticalSection(&m_cs);
}

void threadSec()
{
EnterCriticalSection(&m_cs);
.......

.......
LeaveCriticalSection(&m_cs);
}

Critical Section Example:-

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <windows.h>
#include <iostream>

using namespace std;
CRITICAL_SECTION m_cs;
const int gcMax=10;
volatile int gcount=0;
void ThreadMain(char *name)
{
while (gcount<gcMax)
{
     EnterCriticalSection(&m_cs);
            printf(" %d i am  %s this is my name \n ",gcount ,name);
   gcount++;
     Sleep(100);
     LeaveCriticalSection(&m_cs);

}
}

int main()
{
HANDLE hT[4];
DWORD dWord;
  InitializeCriticalSection(&m_cs);
cout<<"Starting......"<<endl;
Sleep(500);
    hT[0]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadMain,(LPVOID)"first",0,&dWord);
    hT[1]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadMain,(LPVOID)"second",0,&dWord);
    hT[2]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadMain,(LPVOID)"third",0,&dWord);
    hT[3]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadMain,(LPVOID)"forth",0,&dWord);
WaitForMultipleObjects(4,hT,TRUE,INFINITE);
    cout<<"completed"<<endl;
    DeleteCriticalSection(&m_cs);
return 0;
}






Comments

Popular posts from this blog

Microservice Architecture

Agile development & Deployment is difficult in case of ____ Monolithic Software built as microservices can, by definition, be broken down into multiple component services ? True Separating components with conflicting resource requirements falls under the bucket of _ Microservices Complexity of developing, testing & deploying distributed system, Handling partial failures account to disadvantages of Microservices Benefits of Microservices include - All the options Decomposition of Microservices based on 2 categories namely Business capability , Subdomain Simple to Develop, Test, Deploy, Scale represents ____ Monolithic Is Microservice is considered as subset of SOA ? True The 3Cs of Microservices includes all these except Control Microservice Architecture adapts following concepts All the options The client expects a timely response from the service and might even block while it waits represents__client service interaction styles Synch...

What is Document/View Architecture in MFC?

By default MFC application wizard creats with an skeleton with a document class and another is view class.MFC seperates data management into these two class.The document class store the data and print the data and view display the data and manages the user interaction with it. Notepad is simple example for SDI application. or ALL MFC application which have user interface follow this architecture. Any MFC application creates with two basic skeleton one is document class and another is view class.document manages the data for multiple view,and view class displays the data. MFC document/view architecture makes it easy to support multiple view,multiple document types, splitter windows and other valuable user interface features. . For exm:- in SDI application we have following major class:- 1. CMainFrameApp:- Frame class derived  from the CFrameWnd 2. CMySDIView :- View class derived  from the CView class 3. CMainDoc :- Document class derived  from the CDoc...