pthreads
play

pthreads pthreads (POSIX threads) is a library for doing threading - PDF document

12/10/2019 pthreads pthreads (POSIX threads) is a library for doing threading pthreads Can transparently be used under User or Kernel threads Dr. Jonathan Misurda jmisurda@cs.arizona.edu 1 2 pthread_create() POSIX #include


  1. 12/10/2019 pthreads • pthreads (POSIX threads) is a library for doing threading pthreads • Can transparently be used under User or Kernel threads Dr. Jonathan Misurda jmisurda@cs.arizona.edu 1 2 pthread_create() POSIX #include <stdio.h> • Portable Operating System Interface #include <pthread.h> void *do_stuff(void *p) { printf("Hello from thread %d\n", *(int *)p); • Standard to unify the programs and system } calls that many different OSes provide. int main() { pthread_t thread; int id, arg1, arg2; arg1 = 1; id = pthread_create(&thread, NULL, do_stuff, (void *)&arg1); arg2 = 2; do_stuff((void *)&arg2); return 0; } 3 4 Output Yield! #include <stdio.h> #include <pthread.h> Hello from thread 2 void *do_stuff(void *p) { printf("Hello from thread %d\n", *(int *)p); } int main() { pthread_t thread; int id, arg1, arg2; arg1 = 1; id = pthread_create(&thread, NULL, do_stuff, (void *)&arg1); pthread_yield(); arg2 = 2; do_stuff((void *)&arg2); return 0; } 5 6 1

  2. 12/10/2019 pthread_join Output #include <stdio.h> #include <pthread.h> Hello from thread 1 void *do_stuff(void *p) { Hello from thread 2 printf("Hello from thread %d\n", *(int *)p); } int main() { pthread_t thread; int id, arg1, arg2; arg1 = 1; id = pthread_create(&thread, NULL, do_stuff, (void *)&arg1); arg2 = 2; do_stuff((void *)&arg2); pthread_join(thread, NULL); return 0; } 7 8 Output Compile Hello from thread 2 • Need the –pthread option to gcc Hello from thread 1 • Links in the library gcc –o threadtest threadtest.c -pthread 9 10 pthread_create() Start Routine Prototype int pthread_create( pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *(*start_routine)(void*) void *restrict arg ); • A unique identifier for the thread • Thread attributes or NULL for the default • A C Function Pointer • The argument to pass to the function 11 12 2

  3. 12/10/2019 Java Threads Output class TestThread implements Runnable { Hello from thread 1 private int x; public static void main(String[] args) { Hello from thread 2 Thread t1 = new Thread(new TestThread(1)); Thread t2 = new Thread(new TestThread(2)); t1.start(); t2.start(); } public void run() { System.out.println("Hello from thread " + x); } public TestThread(int y) { x = y; } } 13 14 3

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend