Sunteți pe pagina 1din 18

NEED OF MULTITHREAD:

A single application may be required to perform several similar


tasks.
for example, a busy web server may have several of clients
concurrently accessing it.if the web server ran as a traditional single-
threaded process, it would be able to service only one client at a
time.
Hence it is more efficient to use one process that contains multiple
threads. Than the server would create a separate thread that would
listen for client requests .when a request was made, the server would
create another thread to service the request.
The Difference between single and
multithread: 
multithread:

 
 
Single-threaded Apartments
consist of exactly one thread, so all COM objects that live in a
single-threaded apartment can receive method calls only from the
one thread that belongs to that apartment.

All method calls to a COM object in a single-thread apartment


are synchronized with the windows message queue for the single-
threaded apartment's thread.

The Multithreading paradigm has become more popular as


efforts to further exploit instruction level parallelism have stalled
since the late-1990s.
Multithreaded apartments
Consist of one or more threads, so all COM objects that live
in an multithreaded apartment can receive method calls
directly from any of the threads that belong to the
multithreaded apartment.

Calls to COM objects in a multithreaded apartment are


synchronized by the objects themselves.

The Multithreading paradigm has become more popular as


efforts to further exploit instruction level parallelism have
stalled since the late-1990s.
Advantages:
Responsiveness:

Resource sharing:

Economy:

Utilization of multiprocessor architectures:


Thread libraries:
 
A thread library provides the programmer an API for
creating and managing threads.
There are two primary ways of implementing a thread
library.
The first approach is to provide a library entirely in user
space with no kernel support.all code and data structures for
the library exist in user space.this means that invoking a
function in the library results in local functions call in user
space and not a system call. 
The main three libraries are in use today:
POSIX P threads:

#include<pthread.h>
#include<stdio.h>
int sum;/this data is shared by the threads (s)*/
void *runner (void *param);/*the thread*/
int main(int argc, char *argv[])
{
pthread-t tid; /*the thread identifier*/
pthread-attr-t attr; /*set of thread attributes*/
if(argc!=2){
fprintf (stderr,”usage:a.out<integer value>\n”);
return -1;}
if (atoi(argv[1])<0)
{
 
fprint(stderr,”%d must be>=0\n”,atoi(argv[1]));
Return -1;
}
/*get the default attributes*/ df
pthread-attr-init(&attr);
/*create the thread*/
pthread-create(&tid,&attr,runner,argv[1];
/*wait for the thread to exit*/
pthread-join(tid,NULL);
print f(“sum=%d\n”,sum);
}
the thread will begin control in this function*/
Void *runner(void *param)
{
int i, upper =atoi(param);
Sum=0;
For(i=1;i<=upper;i++)
Sum+=i;
pthread-exit

multithreaded c program using the  


p threads API

 
Win32threads:
 
#include<windows.h>
#include<stdio.h>
DWORD Sum;/*data is shared by the thread(s)*/
/*the thread runs in this separate function*/
DWORD WINAPI summation(LPVOID param)
{
DWORD Upper =*(DWORD*)Param;
For(DWORD i=0;i<=upper;i++)
Sum+=I;
Return 0;
}
 
Int main(int argc, char *argv[])
{
DWORD ThreadId;
HANDLE ThreadHandle;
Int Param;
/*perform some basic error checking */
If (argc!=2){
Fprint(stderr,”An integer parameter is required\n”);
return -1;
}
Param =atoi(argv [1]);
If (Param<0){
Fprint(stderr,”An integer>=0 is required\n”);
Return -1;
}
 
create the thread
ThreadHandle=CreateThread(
NULL,//default security attributes
0,//default stack size
Summation,//thread function
&Param,//parameter to thread function
0,//default creation Flags
&ThreadId);//returns the thread identifier
if(TheredHandle!=NULL){
//now wait for the thread to finish
WaitForSingleObjet(ThreadHandlel,INFINITE);
//close the thread handle
CloseHandle (ThreadHandle);
printf(“Sum=%D\n”,Sum);
}}
Multithreading c program using
the Win32 API
THANK YOU

S-ar putea să vă placă și