zoukankan      html  css  js  c++  java
  • [Operating System] {ud923} P2L3: Threads Case Study: PThreads

     

    pthread_create create a new data structure that's of the type pthread type. "pthread_t *thread"

    pthread_attr_t (p thread attribute type) is a data structure usde to specify certain things about the thread, that the p_thread library will take into consideration when managing the thread. (discuss in the next slide)

    pthread_create return an "int", a status information, indicating the creation was successful or a failure. 

    pthread_join also returns an "int", indicating the status

    Thread   Pthreads

     Fork:

    ※ proc

    ※ args

    pthread_create

    ※ start_routine

    ※ arg 

     Join  pthread_join

    https://blog.csdn.net/Gordennizaicunzai/article/details/78007584

    void** interpretation


     

    https://docs.oracle.com/cd/E19504-01/802-5938/6i9lnfe4c/index.html

     

    in Birrell's model, every thread has to join back to its parent thread.

    But in pthread, there's a possibility for the children threads to be detached from the parent.

    in this case, the children threads are kind of equivalent to the parent thread, with the exception that the parent thread holds some additional information about its children threads.

     

    threads can also be created as detached threads, using the attribute DETACHED state.

    the value of this attribute first needs to be set to PTHREAD_CREATE_DETACHED, because otherwise the default setting is to be  a joinable thread.

     

    Errata

    There is a typo @4:58 with the code example. The pthread_create() function should be passed the following parameters:

    pthread_create(&tid, &attr, foo, NULL);
    

    PThread Lesson Resources


    https://stackoverflow.com/questions/22619876/openmp-multithreading-or-multiprocessing-c

     


    https://stackoverflow.com/questions/3949901/pthreads-vs-openmp


     pthread hello-world example:

    https://computing.llnl.gov/tutorials/pthreads/samples/hello.c

    /******************************************************************************
    * FILE: hello.c
    * DESCRIPTION:
    *   A "hello world" Pthreads program.  Demonstrates thread creation and
    *   termination.
    * AUTHOR: Blaise Barney
    * LAST REVISED: 08/09/11
    ******************************************************************************/
    #include <pthread.h>
    #include <stdio.h>
    #include <stdlib.h>
    #define NUM_THREADS    5
    
    void *PrintHello(void *threadid)
    {
       long tid;
       tid = (long)threadid;
       printf("Hello World! It's me, thread #%ld!
    ", tid);
       pthread_exit(NULL);
    }
    
    int main(int argc, char *argv[])
    {
       pthread_t threads[NUM_THREADS];
       int rc;
       long t;
       for(t=0;t<NUM_THREADS;t++){
         printf("In main: creating thread %ld
    ", t);
         rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
         if (rc){
           printf("ERROR; return code from pthread_create() is %d
    ", rc);
           exit(-1);
           }
         }
    
       /* Last thing that main() should do */
       pthread_exit(NULL);
    }

     

    PThread Lesson Resources

     

     

    up1+up2 => segmentation fault

    up1+down2 => 1,2,3,4,5

    down1+up2 => 4,5,5,5,5

    donw1+down2 => 140732886074992,140732886074992,140732886074992,140732886074992,140732886074992

    What's wrong??? 

     

     

     

     

     

     

     

     condition variable 

     

     

    implementation: producer and consumer

     

     

    Errata

    Incase that it is unclear, the consumer never terminates because it operates in a continuous while(1) loop.


    https://www.quora.com/Why-do-we-use-the-functions-fflush-stdin-and-fflush-stdout-in-c
     


    summary

  • 相关阅读:
    Matlab中fsolve传递系数变量
    MongoDB安装与启动
    Java Runnable与Callable区别
    Java创建线程的两种方式
    VC++记录
    spring-boot-mybatis
    spring-boot-mongodb
    SpringBoot helloworld
    mysql进行时
    java多线程对CountDownLatch的使用实例
  • 原文地址:https://www.cnblogs.com/ecoflex/p/10897665.html
Copyright © 2011-2022 走看看