Passing Data between thread using C issue

后端 未结 2 1563
臣服心动
臣服心动 2021-01-12 18:48

I want know how to pass data between threads using C language.

For example:X waits for a message from somewhere.
Y sends T-X a message about an

2条回答
  •  时光取名叫无心
    2021-01-12 19:51

    a sample program taken from https://computing.llnl.gov/tutorials/pthreads/#Mutexes and modified. This shows, how to use a globally declared data in multiple threads.

    #include 
    #include 
    #include 
    
    /*   
    The following structure contains the necessary information  
    to allow the function "dotprod" to access its input data and 
    place its output into the structure.  
    */
    
    typedef struct 
     {
       double      *a;
       double      *b;
       double     sum; 
       int     veclen; 
     } DOTDATA;
    
    /* Define globally accessible variables and a mutex */
    
    #define NUMTHRDS 4
    #define VECLEN 100
    
    DOTDATA dotstr; //GLOBAL DATA which is going to be accessed by different threads
    
    pthread_t callThd[NUMTHRDS];
    pthread_mutex_t mutexsum;
    
    void *dotprod(void *arg)
    {
    
       /* Define and use local variables for convenience */
    
       int i, start, end, len ;
       long offset;
       double mysum, *x, *y;
       offset = (long)arg;
    
       len = dotstr.veclen;
       start = offset*len;
       end   = start + len;
       x = dotstr.a;
       y = dotstr.b;
    
       /*
       Perform the dot product and assign result
       to the appropriate variable in the structure. 
       */
    
       mysum = 0;
       for (i=start; i

提交回复
热议问题