| 
            Last change
 on this file since 5a894e12 was             c26bea2a, checked in by Peter A. Buhr <pabuhr@…>, 2 years ago           | 
        
        
          | 
             
first attempt at renaming directory tests/concurrent to tests/concurrency to harmonize with other concurrency directory names 
 
           | 
        
        
          
            
              - 
Property                 mode
 set to                 
100644
               
             
           | 
        
        
          | 
            File size:
            877 bytes
           | 
        
      
      
| Line |   | 
|---|
| 1 | #include <fstream.hfa>
 | 
|---|
| 2 | #include <thread.hfa>
 | 
|---|
| 3 | /* test pthread create/join/exit */
 | 
|---|
| 4 | 
 | 
|---|
| 5 | int arr[20];
 | 
|---|
| 6 | 
 | 
|---|
| 7 | void* fetch(void* idx){
 | 
|---|
| 8 |     int res = arr[(uint64_t)idx];
 | 
|---|
| 9 |     pthread_exit((void*)res);
 | 
|---|
| 10 |     sout | "it should not be here";
 | 
|---|
| 11 |     exit(1);
 | 
|---|
| 12 |     //return (void*)res;
 | 
|---|
| 13 | }
 | 
|---|
| 14 | 
 | 
|---|
| 15 | void arr_init(){
 | 
|---|
| 16 |     for (int i = 0; i < 20; i++){
 | 
|---|
| 17 |         arr[i] = i;
 | 
|---|
| 18 |     }
 | 
|---|
| 19 | }
 | 
|---|
| 20 | 
 | 
|---|
| 21 | int main(int argc, char const *argv[])
 | 
|---|
| 22 | {
 | 
|---|
| 23 |     pthread_t threads[20];
 | 
|---|
| 24 |     arr_init();
 | 
|---|
| 25 |     int status;
 | 
|---|
| 26 |     for (int i = 0; i < 20; i++){
 | 
|---|
| 27 |         status = pthread_create(&threads[i], NULL, fetch, (void*)i);
 | 
|---|
| 28 |         if (status != 0) exit(1);
 | 
|---|
| 29 |     }
 | 
|---|
| 30 |     int res = 0;
 | 
|---|
| 31 |     for (int i = 0; i < 20; i++){
 | 
|---|
| 32 |         void* _res = NULL;
 | 
|---|
| 33 |         status = pthread_join(threads[i], &_res);
 | 
|---|
| 34 |         if (status != 0) exit(2);
 | 
|---|
| 35 |         if (((uint64_t)_res) != i) exit(3);
 | 
|---|
| 36 |         res += (uint64_t)_res;
 | 
|---|
| 37 |     }
 | 
|---|
| 38 |     sout | "final res is" | res;
 | 
|---|
| 39 | 
 | 
|---|
| 40 |     return 0;
 | 
|---|
| 41 | }
 | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.