/[livstidsfanger]/trunk/livstidsfanger.c
ViewVC logotype

Diff of /trunk/livstidsfanger.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 14 by trond, 2014-11-09T15:30:18Z Revision 15 by trond, 2014-11-19T19:32:53Z
# Line 1  Line 1 
1  // Programmet bruker ISO C 2011 (ISO/IEC 9899:2011) og Pthreads (IEEE Std 1003.1c-2001). -*- coding: utf-8 -*-  // Programmet bruker ISO C 2011 (ISO/IEC 9899:2011) og Pthreads (IEEE Std 1003.1c-2001). -*- coding: utf-8 -*-
2  // Løsning programmert av Trond Endrestøl <Trond.Endrestol@ximalas.info>, 2014-11-06.  // Løsning programmert av Trond Endrestøl <Trond.Endrestol@ximalas.info>, 2014-11-06.
3    
4  // $Ximalas$  // $Ximalas$
5    
6  #if __STDC_VERSION__ < 199901L  #if __STDC_VERSION__ < 199901L
7  #error det er tvilsomt om du får kompilert denne kildekoden med så gammel C-kompilator  #error det er tvilsomt om du får kompilert denne kildekoden med så gammel C-kompilator
8  #endif  #endif
9    
10  #include <errno.h>  #include <errno.h>
11  #include <pthread.h>  #include <pthread.h>
12    #include <sched.h>
13  #include <signal.h>  #include <signal.h>
14  #include <stdbool.h>  #include <stdbool.h>
15  #include <stdio.h>  #include <stdio.h>
16  #include <stdlib.h>  #include <stdlib.h>
17  #include <string.h>  #include <string.h>
18  #include <time.h>  #include <time.h>
19  #include <unistd.h>  #include <unistd.h>
20    
21  #if _POSIX_THREADS < 200112L  #if _POSIX_THREADS < 200112L
22  #error her mangler det støtte for POSIX Threads anno 2001  #error her mangler det støtte for POSIX Threads anno 2001
23  #endif  #endif
24    
25  #if __STDC_VERSION__ >= 201112L  #if __STDC_VERSION__ >= 201112L
26  #include <stdnoreturn.h>  #include <stdnoreturn.h>
27  #else  #else
# Line 169  noreturn void *livstidsfange(void *arg) Line 170  noreturn void *livstidsfange(void *arg)
170            printf("livstidsfange %2zu vipper %s bryter 1\n", i + 1, brytere[0] == true ? "opp" : "ned");            printf("livstidsfange %2zu vipper %s bryter 1\n", i + 1, brytere[0] == true ? "opp" : "ned");
171    
172            harVippetBryter1 = true;            harVippetBryter1 = true;
173          } // if          } // if
174          else {          else {
175            brytere[1] = !brytere[1];            brytere[1] = !brytere[1];
176            printf("livstidsfange %2zu vipper %s bryter 2\n", i + 1, brytere[1] == true ? "opp" : "ned");            printf("livstidsfange %2zu vipper %s bryter 2\n", i + 1, brytere[1] == true ? "opp" : "ned");
177          } // else          } // else
178        } // else        } // else
179      } // else      } // else
180    
181      // Tusle ut av rommet.      // Tusle ut av rommet.
182      printf("livstidsfange %2zu låser opp mutex\n", i + 1);      printf("livstidsfange %2zu låser opp mutex\n", i + 1);
183      pthread_mutex_unlock(&mutex);      pthread_mutex_unlock(&mutex);
184      printf("livstidsfange %2zu har låst opp mutex\n", i + 1);      printf("livstidsfange %2zu har låst opp mutex\n", i + 1);
185    
186    #ifdef _POSIX_PRIORITY_SCHEDULING
187        sched_yield();
188    #endif
189    } // while    } // while
190  } // livstidsfange()  } // livstidsfange()
191    
192  void visResultater(void)  void visResultater(void)
193  {  {
194    size_t i;    size_t i;
195    
196    fflush(stderr);    fflush(stderr);
197    fflush(stdout);    fflush(stdout);
198    
199    puts("\nResultater:\n");    puts("\nResultater:\n");
200    
201    printf("bryter %u er ved avslutning vippet %s\n", 1U, brytere[0] == true ? "opp" : "ned");    printf("bryter %u er ved avslutning vippet %s\n", 1U, brytere[0] == true ? "opp" : "ned");
202    printf("bryter %u er ved avslutning vippet %s\n", 2U, brytere[1] == true ? "opp" : "ned");    printf("bryter %u er ved avslutning vippet %s\n", 2U, brytere[1] == true ? "opp" : "ned");
203    printf("livstidsfange %2zu var den tellende livstidsfangen\n\n", tellendeLivstidsfange + 1);    printf("livstidsfange %2zu var den tellende livstidsfangen\n\n", tellendeLivstidsfange + 1);


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

svn@ximalas.info
ViewVC Help
Powered by ViewVC 1.2.1