Difference between revisions of "Pthread"
From Teknologisk videncenter
m (→Links) |
m |
||
Line 1: | Line 1: | ||
+ | =Using pthreads= | ||
+ | ==Single thread example== | ||
+ | <source lang=c line> | ||
+ | #include <stdio.h> | ||
+ | #include <pthread.h> | ||
+ | |||
+ | long counter; | ||
+ | void * adder(void * data) { | ||
+ | for (int i=0; i < 1000000; i++) | ||
+ | counter++; | ||
+ | } | ||
+ | |||
+ | int main(void) { | ||
+ | int i; | ||
+ | pthread_t pt; | ||
+ | |||
+ | counter=0; | ||
+ | pthread_create(&pt, NULL, adder, NULL); | ||
+ | pthread_join(pt, NULL); | ||
+ | printf("Value of counter is %ld\n", counter); | ||
+ | return(0); | ||
+ | } | ||
+ | </source> | ||
=Releasing resources used by a pthread= | =Releasing resources used by a pthread= | ||
To release the resources - memory for stack and householding - it is necessary to call either [https://www.man7.org/linux/man-pages/man3/pthread_detach.3.html pthread_detach] or [https://www.man7.org/linux/man-pages/man3/pthread_join.3.html pthread_join]. The resources are not released when the pthread exits without one of these calls. | To release the resources - memory for stack and householding - it is necessary to call either [https://www.man7.org/linux/man-pages/man3/pthread_detach.3.html pthread_detach] or [https://www.man7.org/linux/man-pages/man3/pthread_join.3.html pthread_join]. The resources are not released when the pthread exits without one of these calls. |
Revision as of 15:27, 17 December 2022
Using pthreads
Single thread example
1 #include <stdio.h>
2 #include <pthread.h>
3
4 long counter;
5 void * adder(void * data) {
6 for (int i=0; i < 1000000; i++)
7 counter++;
8 }
9
10 int main(void) {
11 int i;
12 pthread_t pt;
13
14 counter=0;
15 pthread_create(&pt, NULL, adder, NULL);
16 pthread_join(pt, NULL);
17 printf("Value of counter is %ld\n", counter);
18 return(0);
19 }
Releasing resources used by a pthread
To release the resources - memory for stack and householding - it is necessary to call either pthread_detach or pthread_join. The resources are not released when the pthread exits without one of these calls.
- pthread_join is called by the process or another thread.
- pthread_detach is typically called by the thread itself to release the resources when the thread terminates