Threads, Computer Engineering

Assignment Help:

First, remember that different processes keep their own data in distinct address spaces. Threads, on the other hand, explicitly share their entire address space with one another. Although this can make things a lot faster, it comes with the cost of making programming a lot more complicated.

In Unix/POSIX, the threads API is composed of two main calls:


pthread create(), which starts a separate thread;


pthread join(), which waits for a thread to complete.

Notice that the general syntax for using these is:

pid = pthread_create(&tid, NULL, function_ptr, argument);

pthread_join(tid, &result);

Example:
void *run(void *d)
{
int q = ((int) d);
int v = 0;
for (int i=0; iv = v + some_expensive_function_call();
return (void *) v;
}
int main()

{
pthread_t t1, t2;
int *r1, *r2;
int arg1=100;
int arg2=666;
pthread_create(&t1, NULL, run, &arg1);
pthread_create(&t2, NULL, run, &arg2);
pthread_join(t1, (void **) &r1);
pthread_join(t2, (void **) &r2);
cout << "r1= " << *r1 << ", r2=" << *r2 << endl;
}
Notice that the above threads maintain different stacks and different sets of registers; except for those, however, they share all their address spaces. Also notice that if you were to run this code in a 2 core machine, it would be expected that it ran roughly twice as fast as it would in a single core machine. If you ran it in a 4 core machine, however, it would run as fast as in the 2 core machine, since there would be no suf?cient threads to exploit the available parallelism.


Related Discussions:- Threads

How can we write an interrupt servicing routine, Q. How can we write an Int...

Q. How can we write an Interrupt Servicing Routine? The following are the fundamentalthough rigid sequence of steps: 1.  Save the system context (flags,registers etc. which

Explain about decimal numbers, Q. Explain about Decimal Numbers? Deci...

Q. Explain about Decimal Numbers? Decimal number system has 10 digits signified by 0,1,2,3,4,5,6,7,8 and 9. Any decimal number can be signified as a string of these digits an

Differentiate between $display and $strobe, Differentiate between $display ...

Differentiate between $display and $strobe These commands have similar syntax, and display text on screen during simulation. $display and $strobe display once every time they a

What is the benefit of using linq on dataset, The main aim of using LINQ to...

The main aim of using LINQ to Dataset is to run strongly typed queries on Dataset. Assume we want to combine the results from two Datasets, or we need to take a distinct value f

Differentiate between logical address and physical address, Differentiate b...

Differentiate between logical address and physical address. A logical address is the address of the data word or instruction as used by a program (it includes the use of base

Temporary location, Compare zero-, one, two-, and three- address machines b...

Compare zero-, one, two-, and three- address machines by writing programs to compute                         X = (A + B x C)/(D - E x F) for every of the four machines.  Do n

What is hypercube network, Q. What is Hypercube Network? The hypercube ...

Q. What is Hypercube Network? The hypercube architecture has played a significant role in development of parallel processing and is quite influential and popular. The highly sy

Test, what persistance shouold i use

what persistance shouold i use

Texture - elements of composition, Texture Texture is how artists show...

Texture Texture is how artists show what an object would feel like to touch. This can have a dramatic effect on how an image is perceived. Imagine for instance an image that h

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd