From 9e72e0357142fe0132cd09063c3c31f8ff9ce1e3 Mon Sep 17 00:00:00 2001 From: Brandon Rodriguez <brodriguez8774@gmail.com> Date: Wed, 15 Nov 2017 09:31:24 -0500 Subject: [PATCH] Add examples to project and improve file organization --- {Documents => Data}/big-data/0 | 0 {Documents => Data}/big-data/1 | 0 {Documents => Data}/big-data/10 | 0 {Documents => Data}/big-data/100 | 0 {Documents => Data}/big-data/101 | 0 {Documents => Data}/big-data/102 | 0 {Documents => Data}/big-data/103 | 0 {Documents => Data}/big-data/104 | 0 {Documents => Data}/big-data/105 | 0 {Documents => Data}/big-data/106 | 0 {Documents => Data}/big-data/107 | 0 {Documents => Data}/big-data/108 | 0 {Documents => Data}/big-data/109 | 0 {Documents => Data}/big-data/11 | 0 {Documents => Data}/big-data/110 | 0 {Documents => Data}/big-data/111 | 0 {Documents => Data}/big-data/112 | 0 {Documents => Data}/big-data/113 | 0 {Documents => Data}/big-data/114 | 0 {Documents => Data}/big-data/115 | 0 {Documents => Data}/big-data/116 | 0 {Documents => Data}/big-data/117 | 0 {Documents => Data}/big-data/118 | 0 {Documents => Data}/big-data/119 | 0 {Documents => Data}/big-data/12 | 0 {Documents => Data}/big-data/120 | 0 {Documents => Data}/big-data/121 | 0 {Documents => Data}/big-data/122 | 0 {Documents => Data}/big-data/123 | 0 {Documents => Data}/big-data/124 | 0 {Documents => Data}/big-data/125 | 0 {Documents => Data}/big-data/126 | 0 {Documents => Data}/big-data/127 | 0 {Documents => Data}/big-data/128 | 0 {Documents => Data}/big-data/129 | 0 {Documents => Data}/big-data/13 | 0 {Documents => Data}/big-data/130 | 0 {Documents => Data}/big-data/131 | 0 {Documents => Data}/big-data/132 | 0 {Documents => Data}/big-data/133 | 0 {Documents => Data}/big-data/134 | 0 {Documents => Data}/big-data/135 | 0 {Documents => Data}/big-data/136 | 0 {Documents => Data}/big-data/137 | 0 {Documents => Data}/big-data/138 | 0 {Documents => Data}/big-data/139 | 0 {Documents => Data}/big-data/14 | 0 {Documents => Data}/big-data/140 | 0 {Documents => Data}/big-data/141 | 0 {Documents => Data}/big-data/142 | 0 {Documents => Data}/big-data/143 | 0 {Documents => Data}/big-data/144 | 0 {Documents => Data}/big-data/145 | 0 {Documents => Data}/big-data/146 | 0 {Documents => Data}/big-data/147 | 0 {Documents => Data}/big-data/148 | 0 {Documents => Data}/big-data/149 | 0 {Documents => Data}/big-data/15 | 0 {Documents => Data}/big-data/150 | 0 {Documents => Data}/big-data/151 | 0 {Documents => Data}/big-data/152 | 0 {Documents => Data}/big-data/153 | 0 {Documents => Data}/big-data/154 | 0 {Documents => Data}/big-data/155 | 0 {Documents => Data}/big-data/156 | 0 {Documents => Data}/big-data/157 | 0 {Documents => Data}/big-data/158 | 0 {Documents => Data}/big-data/159 | 0 {Documents => Data}/big-data/16 | 0 {Documents => Data}/big-data/160 | 0 {Documents => Data}/big-data/161 | 0 {Documents => Data}/big-data/162 | 0 {Documents => Data}/big-data/163 | 0 {Documents => Data}/big-data/164 | 0 {Documents => Data}/big-data/165 | 0 {Documents => Data}/big-data/166 | 0 {Documents => Data}/big-data/17 | 0 {Documents => Data}/big-data/18 | 0 {Documents => Data}/big-data/19 | 0 {Documents => Data}/big-data/2 | 0 {Documents => Data}/big-data/20 | 0 {Documents => Data}/big-data/21 | 0 {Documents => Data}/big-data/22 | 0 {Documents => Data}/big-data/23 | 0 {Documents => Data}/big-data/24 | 0 {Documents => Data}/big-data/25 | 0 {Documents => Data}/big-data/26 | 0 {Documents => Data}/big-data/27 | 0 {Documents => Data}/big-data/28 | 0 {Documents => Data}/big-data/29 | 0 {Documents => Data}/big-data/3 | 0 {Documents => Data}/big-data/30 | 0 {Documents => Data}/big-data/31 | 0 {Documents => Data}/big-data/32 | 0 {Documents => Data}/big-data/33 | 0 {Documents => Data}/big-data/34 | 0 {Documents => Data}/big-data/35 | 0 {Documents => Data}/big-data/36 | 0 {Documents => Data}/big-data/37 | 0 {Documents => Data}/big-data/38 | 0 {Documents => Data}/big-data/39 | 0 {Documents => Data}/big-data/4 | 0 {Documents => Data}/big-data/40 | 0 {Documents => Data}/big-data/41 | 0 {Documents => Data}/big-data/42 | 0 {Documents => Data}/big-data/43 | 0 {Documents => Data}/big-data/44 | 0 {Documents => Data}/big-data/45 | 0 {Documents => Data}/big-data/46 | 0 {Documents => Data}/big-data/47 | 0 {Documents => Data}/big-data/48 | 0 {Documents => Data}/big-data/49 | 0 {Documents => Data}/big-data/5 | 0 {Documents => Data}/big-data/50 | 0 {Documents => Data}/big-data/51 | 0 {Documents => Data}/big-data/52 | 0 {Documents => Data}/big-data/53 | 0 {Documents => Data}/big-data/54 | 0 {Documents => Data}/big-data/55 | 0 {Documents => Data}/big-data/56 | 0 {Documents => Data}/big-data/57 | 0 {Documents => Data}/big-data/58 | 0 {Documents => Data}/big-data/59 | 0 {Documents => Data}/big-data/6 | 0 {Documents => Data}/big-data/60 | 0 {Documents => Data}/big-data/61 | 0 {Documents => Data}/big-data/62 | 0 {Documents => Data}/big-data/63 | 0 {Documents => Data}/big-data/64 | 0 {Documents => Data}/big-data/65 | 0 {Documents => Data}/big-data/66 | 0 {Documents => Data}/big-data/67 | 0 {Documents => Data}/big-data/68 | 0 {Documents => Data}/big-data/69 | 0 {Documents => Data}/big-data/7 | 0 {Documents => Data}/big-data/70 | 0 {Documents => Data}/big-data/71 | 0 {Documents => Data}/big-data/72 | 0 {Documents => Data}/big-data/73 | 0 {Documents => Data}/big-data/74 | 0 {Documents => Data}/big-data/75 | 0 {Documents => Data}/big-data/76 | 0 {Documents => Data}/big-data/77 | 0 {Documents => Data}/big-data/78 | 0 {Documents => Data}/big-data/79 | 0 {Documents => Data}/big-data/8 | 0 {Documents => Data}/big-data/80 | 0 {Documents => Data}/big-data/81 | 0 {Documents => Data}/big-data/82 | 0 {Documents => Data}/big-data/83 | 0 {Documents => Data}/big-data/84 | 0 {Documents => Data}/big-data/85 | 0 {Documents => Data}/big-data/86 | 0 {Documents => Data}/big-data/87 | 0 {Documents => Data}/big-data/88 | 0 {Documents => Data}/big-data/89 | 0 {Documents => Data}/big-data/9 | 0 {Documents => Data}/big-data/90 | 0 {Documents => Data}/big-data/91 | 0 {Documents => Data}/big-data/92 | 0 {Documents => Data}/big-data/93 | 0 {Documents => Data}/big-data/94 | 0 {Documents => Data}/big-data/95 | 0 {Documents => Data}/big-data/96 | 0 {Documents => Data}/big-data/97 | 0 {Documents => Data}/big-data/98 | 0 {Documents => Data}/big-data/99 | 0 {Documents => Data}/small-data/0 | 0 {Documents => Data}/small-data/1 | 0 {Documents => Data}/small-data/2 | 0 {Documents => Data}/small-data/3 | 0 {Documents => Data}/small-data/4 | 0 {Documents => Data}/small-data/5 | 0 {Documents => Data}/small-data/6 | 0 {Documents => Data}/small-data/7 | 0 {Documents => Data}/small-data/8 | 0 Examples/BakingAndEating.c | 117 +++++++++++++++++++++++++++ Examples/PthreadExitWithReturnData.c | 67 +++++++++++++++ Examples/StringThreadEx1.c | 39 +++++++++ Examples/ThreadEx1.c | 57 +++++++++++++ Examples/ThreadEx2.c | 56 +++++++++++++ Examples/ThreadEx3.c | 109 +++++++++++++++++++++++++ 182 files changed, 445 insertions(+) rename {Documents => Data}/big-data/0 (100%) rename {Documents => Data}/big-data/1 (100%) rename {Documents => Data}/big-data/10 (100%) rename {Documents => Data}/big-data/100 (100%) rename {Documents => Data}/big-data/101 (100%) rename {Documents => Data}/big-data/102 (100%) rename {Documents => Data}/big-data/103 (100%) rename {Documents => Data}/big-data/104 (100%) rename {Documents => Data}/big-data/105 (100%) rename {Documents => Data}/big-data/106 (100%) rename {Documents => Data}/big-data/107 (100%) rename {Documents => Data}/big-data/108 (100%) rename {Documents => Data}/big-data/109 (100%) rename {Documents => Data}/big-data/11 (100%) rename {Documents => Data}/big-data/110 (100%) rename {Documents => Data}/big-data/111 (100%) rename {Documents => Data}/big-data/112 (100%) rename {Documents => Data}/big-data/113 (100%) rename {Documents => Data}/big-data/114 (100%) rename {Documents => Data}/big-data/115 (100%) rename {Documents => Data}/big-data/116 (100%) rename {Documents => Data}/big-data/117 (100%) rename {Documents => Data}/big-data/118 (100%) rename {Documents => Data}/big-data/119 (100%) rename {Documents => Data}/big-data/12 (100%) rename {Documents => Data}/big-data/120 (100%) rename {Documents => Data}/big-data/121 (100%) rename {Documents => Data}/big-data/122 (100%) rename {Documents => Data}/big-data/123 (100%) rename {Documents => Data}/big-data/124 (100%) rename {Documents => Data}/big-data/125 (100%) rename {Documents => Data}/big-data/126 (100%) rename {Documents => Data}/big-data/127 (100%) rename {Documents => Data}/big-data/128 (100%) rename {Documents => Data}/big-data/129 (100%) rename {Documents => Data}/big-data/13 (100%) rename {Documents => Data}/big-data/130 (100%) rename {Documents => Data}/big-data/131 (100%) rename {Documents => Data}/big-data/132 (100%) rename {Documents => Data}/big-data/133 (100%) rename {Documents => Data}/big-data/134 (100%) rename {Documents => Data}/big-data/135 (100%) rename {Documents => Data}/big-data/136 (100%) rename {Documents => Data}/big-data/137 (100%) rename {Documents => Data}/big-data/138 (100%) rename {Documents => Data}/big-data/139 (100%) rename {Documents => Data}/big-data/14 (100%) rename {Documents => Data}/big-data/140 (100%) rename {Documents => Data}/big-data/141 (100%) rename {Documents => Data}/big-data/142 (100%) rename {Documents => Data}/big-data/143 (100%) rename {Documents => Data}/big-data/144 (100%) rename {Documents => Data}/big-data/145 (100%) rename {Documents => Data}/big-data/146 (100%) rename {Documents => Data}/big-data/147 (100%) rename {Documents => Data}/big-data/148 (100%) rename {Documents => Data}/big-data/149 (100%) rename {Documents => Data}/big-data/15 (100%) rename {Documents => Data}/big-data/150 (100%) rename {Documents => Data}/big-data/151 (100%) rename {Documents => Data}/big-data/152 (100%) rename {Documents => Data}/big-data/153 (100%) rename {Documents => Data}/big-data/154 (100%) rename {Documents => Data}/big-data/155 (100%) rename {Documents => Data}/big-data/156 (100%) rename {Documents => Data}/big-data/157 (100%) rename {Documents => Data}/big-data/158 (100%) rename {Documents => Data}/big-data/159 (100%) rename {Documents => Data}/big-data/16 (100%) rename {Documents => Data}/big-data/160 (100%) rename {Documents => Data}/big-data/161 (100%) rename {Documents => Data}/big-data/162 (100%) rename {Documents => Data}/big-data/163 (100%) rename {Documents => Data}/big-data/164 (100%) rename {Documents => Data}/big-data/165 (100%) rename {Documents => Data}/big-data/166 (100%) rename {Documents => Data}/big-data/17 (100%) rename {Documents => Data}/big-data/18 (100%) rename {Documents => Data}/big-data/19 (100%) rename {Documents => Data}/big-data/2 (100%) rename {Documents => Data}/big-data/20 (100%) rename {Documents => Data}/big-data/21 (100%) rename {Documents => Data}/big-data/22 (100%) rename {Documents => Data}/big-data/23 (100%) rename {Documents => Data}/big-data/24 (100%) rename {Documents => Data}/big-data/25 (100%) rename {Documents => Data}/big-data/26 (100%) rename {Documents => Data}/big-data/27 (100%) rename {Documents => Data}/big-data/28 (100%) rename {Documents => Data}/big-data/29 (100%) rename {Documents => Data}/big-data/3 (100%) rename {Documents => Data}/big-data/30 (100%) rename {Documents => Data}/big-data/31 (100%) rename {Documents => Data}/big-data/32 (100%) rename {Documents => Data}/big-data/33 (100%) rename {Documents => Data}/big-data/34 (100%) rename {Documents => Data}/big-data/35 (100%) rename {Documents => Data}/big-data/36 (100%) rename {Documents => Data}/big-data/37 (100%) rename {Documents => Data}/big-data/38 (100%) rename {Documents => Data}/big-data/39 (100%) rename {Documents => Data}/big-data/4 (100%) rename {Documents => Data}/big-data/40 (100%) rename {Documents => Data}/big-data/41 (100%) rename {Documents => Data}/big-data/42 (100%) rename {Documents => Data}/big-data/43 (100%) rename {Documents => Data}/big-data/44 (100%) rename {Documents => Data}/big-data/45 (100%) rename {Documents => Data}/big-data/46 (100%) rename {Documents => Data}/big-data/47 (100%) rename {Documents => Data}/big-data/48 (100%) rename {Documents => Data}/big-data/49 (100%) rename {Documents => Data}/big-data/5 (100%) rename {Documents => Data}/big-data/50 (100%) rename {Documents => Data}/big-data/51 (100%) rename {Documents => Data}/big-data/52 (100%) rename {Documents => Data}/big-data/53 (100%) rename {Documents => Data}/big-data/54 (100%) rename {Documents => Data}/big-data/55 (100%) rename {Documents => Data}/big-data/56 (100%) rename {Documents => Data}/big-data/57 (100%) rename {Documents => Data}/big-data/58 (100%) rename {Documents => Data}/big-data/59 (100%) rename {Documents => Data}/big-data/6 (100%) rename {Documents => Data}/big-data/60 (100%) rename {Documents => Data}/big-data/61 (100%) rename {Documents => Data}/big-data/62 (100%) rename {Documents => Data}/big-data/63 (100%) rename {Documents => Data}/big-data/64 (100%) rename {Documents => Data}/big-data/65 (100%) rename {Documents => Data}/big-data/66 (100%) rename {Documents => Data}/big-data/67 (100%) rename {Documents => Data}/big-data/68 (100%) rename {Documents => Data}/big-data/69 (100%) rename {Documents => Data}/big-data/7 (100%) rename {Documents => Data}/big-data/70 (100%) rename {Documents => Data}/big-data/71 (100%) rename {Documents => Data}/big-data/72 (100%) rename {Documents => Data}/big-data/73 (100%) rename {Documents => Data}/big-data/74 (100%) rename {Documents => Data}/big-data/75 (100%) rename {Documents => Data}/big-data/76 (100%) rename {Documents => Data}/big-data/77 (100%) rename {Documents => Data}/big-data/78 (100%) rename {Documents => Data}/big-data/79 (100%) rename {Documents => Data}/big-data/8 (100%) rename {Documents => Data}/big-data/80 (100%) rename {Documents => Data}/big-data/81 (100%) rename {Documents => Data}/big-data/82 (100%) rename {Documents => Data}/big-data/83 (100%) rename {Documents => Data}/big-data/84 (100%) rename {Documents => Data}/big-data/85 (100%) rename {Documents => Data}/big-data/86 (100%) rename {Documents => Data}/big-data/87 (100%) rename {Documents => Data}/big-data/88 (100%) rename {Documents => Data}/big-data/89 (100%) rename {Documents => Data}/big-data/9 (100%) rename {Documents => Data}/big-data/90 (100%) rename {Documents => Data}/big-data/91 (100%) rename {Documents => Data}/big-data/92 (100%) rename {Documents => Data}/big-data/93 (100%) rename {Documents => Data}/big-data/94 (100%) rename {Documents => Data}/big-data/95 (100%) rename {Documents => Data}/big-data/96 (100%) rename {Documents => Data}/big-data/97 (100%) rename {Documents => Data}/big-data/98 (100%) rename {Documents => Data}/big-data/99 (100%) rename {Documents => Data}/small-data/0 (100%) rename {Documents => Data}/small-data/1 (100%) rename {Documents => Data}/small-data/2 (100%) rename {Documents => Data}/small-data/3 (100%) rename {Documents => Data}/small-data/4 (100%) rename {Documents => Data}/small-data/5 (100%) rename {Documents => Data}/small-data/6 (100%) rename {Documents => Data}/small-data/7 (100%) rename {Documents => Data}/small-data/8 (100%) create mode 100644 Examples/BakingAndEating.c create mode 100644 Examples/PthreadExitWithReturnData.c create mode 100644 Examples/StringThreadEx1.c create mode 100644 Examples/ThreadEx1.c create mode 100644 Examples/ThreadEx2.c create mode 100644 Examples/ThreadEx3.c diff --git a/Documents/big-data/0 b/Data/big-data/0 similarity index 100% rename from Documents/big-data/0 rename to Data/big-data/0 diff --git a/Documents/big-data/1 b/Data/big-data/1 similarity index 100% rename from Documents/big-data/1 rename to Data/big-data/1 diff --git a/Documents/big-data/10 b/Data/big-data/10 similarity index 100% rename from Documents/big-data/10 rename to Data/big-data/10 diff --git a/Documents/big-data/100 b/Data/big-data/100 similarity index 100% rename from Documents/big-data/100 rename to Data/big-data/100 diff --git a/Documents/big-data/101 b/Data/big-data/101 similarity index 100% rename from Documents/big-data/101 rename to Data/big-data/101 diff --git a/Documents/big-data/102 b/Data/big-data/102 similarity index 100% rename from Documents/big-data/102 rename to Data/big-data/102 diff --git a/Documents/big-data/103 b/Data/big-data/103 similarity index 100% rename from Documents/big-data/103 rename to Data/big-data/103 diff --git a/Documents/big-data/104 b/Data/big-data/104 similarity index 100% rename from Documents/big-data/104 rename to Data/big-data/104 diff --git a/Documents/big-data/105 b/Data/big-data/105 similarity index 100% rename from Documents/big-data/105 rename to Data/big-data/105 diff --git a/Documents/big-data/106 b/Data/big-data/106 similarity index 100% rename from Documents/big-data/106 rename to Data/big-data/106 diff --git a/Documents/big-data/107 b/Data/big-data/107 similarity index 100% rename from Documents/big-data/107 rename to Data/big-data/107 diff --git a/Documents/big-data/108 b/Data/big-data/108 similarity index 100% rename from Documents/big-data/108 rename to Data/big-data/108 diff --git a/Documents/big-data/109 b/Data/big-data/109 similarity index 100% rename from Documents/big-data/109 rename to Data/big-data/109 diff --git a/Documents/big-data/11 b/Data/big-data/11 similarity index 100% rename from Documents/big-data/11 rename to Data/big-data/11 diff --git a/Documents/big-data/110 b/Data/big-data/110 similarity index 100% rename from Documents/big-data/110 rename to Data/big-data/110 diff --git a/Documents/big-data/111 b/Data/big-data/111 similarity index 100% rename from Documents/big-data/111 rename to Data/big-data/111 diff --git a/Documents/big-data/112 b/Data/big-data/112 similarity index 100% rename from Documents/big-data/112 rename to Data/big-data/112 diff --git a/Documents/big-data/113 b/Data/big-data/113 similarity index 100% rename from Documents/big-data/113 rename to Data/big-data/113 diff --git a/Documents/big-data/114 b/Data/big-data/114 similarity index 100% rename from Documents/big-data/114 rename to Data/big-data/114 diff --git a/Documents/big-data/115 b/Data/big-data/115 similarity index 100% rename from Documents/big-data/115 rename to Data/big-data/115 diff --git a/Documents/big-data/116 b/Data/big-data/116 similarity index 100% rename from Documents/big-data/116 rename to Data/big-data/116 diff --git a/Documents/big-data/117 b/Data/big-data/117 similarity index 100% rename from Documents/big-data/117 rename to Data/big-data/117 diff --git a/Documents/big-data/118 b/Data/big-data/118 similarity index 100% rename from Documents/big-data/118 rename to Data/big-data/118 diff --git a/Documents/big-data/119 b/Data/big-data/119 similarity index 100% rename from Documents/big-data/119 rename to Data/big-data/119 diff --git a/Documents/big-data/12 b/Data/big-data/12 similarity index 100% rename from Documents/big-data/12 rename to Data/big-data/12 diff --git a/Documents/big-data/120 b/Data/big-data/120 similarity index 100% rename from Documents/big-data/120 rename to Data/big-data/120 diff --git a/Documents/big-data/121 b/Data/big-data/121 similarity index 100% rename from Documents/big-data/121 rename to Data/big-data/121 diff --git a/Documents/big-data/122 b/Data/big-data/122 similarity index 100% rename from Documents/big-data/122 rename to Data/big-data/122 diff --git a/Documents/big-data/123 b/Data/big-data/123 similarity index 100% rename from Documents/big-data/123 rename to Data/big-data/123 diff --git a/Documents/big-data/124 b/Data/big-data/124 similarity index 100% rename from Documents/big-data/124 rename to Data/big-data/124 diff --git a/Documents/big-data/125 b/Data/big-data/125 similarity index 100% rename from Documents/big-data/125 rename to Data/big-data/125 diff --git a/Documents/big-data/126 b/Data/big-data/126 similarity index 100% rename from Documents/big-data/126 rename to Data/big-data/126 diff --git a/Documents/big-data/127 b/Data/big-data/127 similarity index 100% rename from Documents/big-data/127 rename to Data/big-data/127 diff --git a/Documents/big-data/128 b/Data/big-data/128 similarity index 100% rename from Documents/big-data/128 rename to Data/big-data/128 diff --git a/Documents/big-data/129 b/Data/big-data/129 similarity index 100% rename from Documents/big-data/129 rename to Data/big-data/129 diff --git a/Documents/big-data/13 b/Data/big-data/13 similarity index 100% rename from Documents/big-data/13 rename to Data/big-data/13 diff --git a/Documents/big-data/130 b/Data/big-data/130 similarity index 100% rename from Documents/big-data/130 rename to Data/big-data/130 diff --git a/Documents/big-data/131 b/Data/big-data/131 similarity index 100% rename from Documents/big-data/131 rename to Data/big-data/131 diff --git a/Documents/big-data/132 b/Data/big-data/132 similarity index 100% rename from Documents/big-data/132 rename to Data/big-data/132 diff --git a/Documents/big-data/133 b/Data/big-data/133 similarity index 100% rename from Documents/big-data/133 rename to Data/big-data/133 diff --git a/Documents/big-data/134 b/Data/big-data/134 similarity index 100% rename from Documents/big-data/134 rename to Data/big-data/134 diff --git a/Documents/big-data/135 b/Data/big-data/135 similarity index 100% rename from Documents/big-data/135 rename to Data/big-data/135 diff --git a/Documents/big-data/136 b/Data/big-data/136 similarity index 100% rename from Documents/big-data/136 rename to Data/big-data/136 diff --git a/Documents/big-data/137 b/Data/big-data/137 similarity index 100% rename from Documents/big-data/137 rename to Data/big-data/137 diff --git a/Documents/big-data/138 b/Data/big-data/138 similarity index 100% rename from Documents/big-data/138 rename to Data/big-data/138 diff --git a/Documents/big-data/139 b/Data/big-data/139 similarity index 100% rename from Documents/big-data/139 rename to Data/big-data/139 diff --git a/Documents/big-data/14 b/Data/big-data/14 similarity index 100% rename from Documents/big-data/14 rename to Data/big-data/14 diff --git a/Documents/big-data/140 b/Data/big-data/140 similarity index 100% rename from Documents/big-data/140 rename to Data/big-data/140 diff --git a/Documents/big-data/141 b/Data/big-data/141 similarity index 100% rename from Documents/big-data/141 rename to Data/big-data/141 diff --git a/Documents/big-data/142 b/Data/big-data/142 similarity index 100% rename from Documents/big-data/142 rename to Data/big-data/142 diff --git a/Documents/big-data/143 b/Data/big-data/143 similarity index 100% rename from Documents/big-data/143 rename to Data/big-data/143 diff --git a/Documents/big-data/144 b/Data/big-data/144 similarity index 100% rename from Documents/big-data/144 rename to Data/big-data/144 diff --git a/Documents/big-data/145 b/Data/big-data/145 similarity index 100% rename from Documents/big-data/145 rename to Data/big-data/145 diff --git a/Documents/big-data/146 b/Data/big-data/146 similarity index 100% rename from Documents/big-data/146 rename to Data/big-data/146 diff --git a/Documents/big-data/147 b/Data/big-data/147 similarity index 100% rename from Documents/big-data/147 rename to Data/big-data/147 diff --git a/Documents/big-data/148 b/Data/big-data/148 similarity index 100% rename from Documents/big-data/148 rename to Data/big-data/148 diff --git a/Documents/big-data/149 b/Data/big-data/149 similarity index 100% rename from Documents/big-data/149 rename to Data/big-data/149 diff --git a/Documents/big-data/15 b/Data/big-data/15 similarity index 100% rename from Documents/big-data/15 rename to Data/big-data/15 diff --git a/Documents/big-data/150 b/Data/big-data/150 similarity index 100% rename from Documents/big-data/150 rename to Data/big-data/150 diff --git a/Documents/big-data/151 b/Data/big-data/151 similarity index 100% rename from Documents/big-data/151 rename to Data/big-data/151 diff --git a/Documents/big-data/152 b/Data/big-data/152 similarity index 100% rename from Documents/big-data/152 rename to Data/big-data/152 diff --git a/Documents/big-data/153 b/Data/big-data/153 similarity index 100% rename from Documents/big-data/153 rename to Data/big-data/153 diff --git a/Documents/big-data/154 b/Data/big-data/154 similarity index 100% rename from Documents/big-data/154 rename to Data/big-data/154 diff --git a/Documents/big-data/155 b/Data/big-data/155 similarity index 100% rename from Documents/big-data/155 rename to Data/big-data/155 diff --git a/Documents/big-data/156 b/Data/big-data/156 similarity index 100% rename from Documents/big-data/156 rename to Data/big-data/156 diff --git a/Documents/big-data/157 b/Data/big-data/157 similarity index 100% rename from Documents/big-data/157 rename to Data/big-data/157 diff --git a/Documents/big-data/158 b/Data/big-data/158 similarity index 100% rename from Documents/big-data/158 rename to Data/big-data/158 diff --git a/Documents/big-data/159 b/Data/big-data/159 similarity index 100% rename from Documents/big-data/159 rename to Data/big-data/159 diff --git a/Documents/big-data/16 b/Data/big-data/16 similarity index 100% rename from Documents/big-data/16 rename to Data/big-data/16 diff --git a/Documents/big-data/160 b/Data/big-data/160 similarity index 100% rename from Documents/big-data/160 rename to Data/big-data/160 diff --git a/Documents/big-data/161 b/Data/big-data/161 similarity index 100% rename from Documents/big-data/161 rename to Data/big-data/161 diff --git a/Documents/big-data/162 b/Data/big-data/162 similarity index 100% rename from Documents/big-data/162 rename to Data/big-data/162 diff --git a/Documents/big-data/163 b/Data/big-data/163 similarity index 100% rename from Documents/big-data/163 rename to Data/big-data/163 diff --git a/Documents/big-data/164 b/Data/big-data/164 similarity index 100% rename from Documents/big-data/164 rename to Data/big-data/164 diff --git a/Documents/big-data/165 b/Data/big-data/165 similarity index 100% rename from Documents/big-data/165 rename to Data/big-data/165 diff --git a/Documents/big-data/166 b/Data/big-data/166 similarity index 100% rename from Documents/big-data/166 rename to Data/big-data/166 diff --git a/Documents/big-data/17 b/Data/big-data/17 similarity index 100% rename from Documents/big-data/17 rename to Data/big-data/17 diff --git a/Documents/big-data/18 b/Data/big-data/18 similarity index 100% rename from Documents/big-data/18 rename to Data/big-data/18 diff --git a/Documents/big-data/19 b/Data/big-data/19 similarity index 100% rename from Documents/big-data/19 rename to Data/big-data/19 diff --git a/Documents/big-data/2 b/Data/big-data/2 similarity index 100% rename from Documents/big-data/2 rename to Data/big-data/2 diff --git a/Documents/big-data/20 b/Data/big-data/20 similarity index 100% rename from Documents/big-data/20 rename to Data/big-data/20 diff --git a/Documents/big-data/21 b/Data/big-data/21 similarity index 100% rename from Documents/big-data/21 rename to Data/big-data/21 diff --git a/Documents/big-data/22 b/Data/big-data/22 similarity index 100% rename from Documents/big-data/22 rename to Data/big-data/22 diff --git a/Documents/big-data/23 b/Data/big-data/23 similarity index 100% rename from Documents/big-data/23 rename to Data/big-data/23 diff --git a/Documents/big-data/24 b/Data/big-data/24 similarity index 100% rename from Documents/big-data/24 rename to Data/big-data/24 diff --git a/Documents/big-data/25 b/Data/big-data/25 similarity index 100% rename from Documents/big-data/25 rename to Data/big-data/25 diff --git a/Documents/big-data/26 b/Data/big-data/26 similarity index 100% rename from Documents/big-data/26 rename to Data/big-data/26 diff --git a/Documents/big-data/27 b/Data/big-data/27 similarity index 100% rename from Documents/big-data/27 rename to Data/big-data/27 diff --git a/Documents/big-data/28 b/Data/big-data/28 similarity index 100% rename from Documents/big-data/28 rename to Data/big-data/28 diff --git a/Documents/big-data/29 b/Data/big-data/29 similarity index 100% rename from Documents/big-data/29 rename to Data/big-data/29 diff --git a/Documents/big-data/3 b/Data/big-data/3 similarity index 100% rename from Documents/big-data/3 rename to Data/big-data/3 diff --git a/Documents/big-data/30 b/Data/big-data/30 similarity index 100% rename from Documents/big-data/30 rename to Data/big-data/30 diff --git a/Documents/big-data/31 b/Data/big-data/31 similarity index 100% rename from Documents/big-data/31 rename to Data/big-data/31 diff --git a/Documents/big-data/32 b/Data/big-data/32 similarity index 100% rename from Documents/big-data/32 rename to Data/big-data/32 diff --git a/Documents/big-data/33 b/Data/big-data/33 similarity index 100% rename from Documents/big-data/33 rename to Data/big-data/33 diff --git a/Documents/big-data/34 b/Data/big-data/34 similarity index 100% rename from Documents/big-data/34 rename to Data/big-data/34 diff --git a/Documents/big-data/35 b/Data/big-data/35 similarity index 100% rename from Documents/big-data/35 rename to Data/big-data/35 diff --git a/Documents/big-data/36 b/Data/big-data/36 similarity index 100% rename from Documents/big-data/36 rename to Data/big-data/36 diff --git a/Documents/big-data/37 b/Data/big-data/37 similarity index 100% rename from Documents/big-data/37 rename to Data/big-data/37 diff --git a/Documents/big-data/38 b/Data/big-data/38 similarity index 100% rename from Documents/big-data/38 rename to Data/big-data/38 diff --git a/Documents/big-data/39 b/Data/big-data/39 similarity index 100% rename from Documents/big-data/39 rename to Data/big-data/39 diff --git a/Documents/big-data/4 b/Data/big-data/4 similarity index 100% rename from Documents/big-data/4 rename to Data/big-data/4 diff --git a/Documents/big-data/40 b/Data/big-data/40 similarity index 100% rename from Documents/big-data/40 rename to Data/big-data/40 diff --git a/Documents/big-data/41 b/Data/big-data/41 similarity index 100% rename from Documents/big-data/41 rename to Data/big-data/41 diff --git a/Documents/big-data/42 b/Data/big-data/42 similarity index 100% rename from Documents/big-data/42 rename to Data/big-data/42 diff --git a/Documents/big-data/43 b/Data/big-data/43 similarity index 100% rename from Documents/big-data/43 rename to Data/big-data/43 diff --git a/Documents/big-data/44 b/Data/big-data/44 similarity index 100% rename from Documents/big-data/44 rename to Data/big-data/44 diff --git a/Documents/big-data/45 b/Data/big-data/45 similarity index 100% rename from Documents/big-data/45 rename to Data/big-data/45 diff --git a/Documents/big-data/46 b/Data/big-data/46 similarity index 100% rename from Documents/big-data/46 rename to Data/big-data/46 diff --git a/Documents/big-data/47 b/Data/big-data/47 similarity index 100% rename from Documents/big-data/47 rename to Data/big-data/47 diff --git a/Documents/big-data/48 b/Data/big-data/48 similarity index 100% rename from Documents/big-data/48 rename to Data/big-data/48 diff --git a/Documents/big-data/49 b/Data/big-data/49 similarity index 100% rename from Documents/big-data/49 rename to Data/big-data/49 diff --git a/Documents/big-data/5 b/Data/big-data/5 similarity index 100% rename from Documents/big-data/5 rename to Data/big-data/5 diff --git a/Documents/big-data/50 b/Data/big-data/50 similarity index 100% rename from Documents/big-data/50 rename to Data/big-data/50 diff --git a/Documents/big-data/51 b/Data/big-data/51 similarity index 100% rename from Documents/big-data/51 rename to Data/big-data/51 diff --git a/Documents/big-data/52 b/Data/big-data/52 similarity index 100% rename from Documents/big-data/52 rename to Data/big-data/52 diff --git a/Documents/big-data/53 b/Data/big-data/53 similarity index 100% rename from Documents/big-data/53 rename to Data/big-data/53 diff --git a/Documents/big-data/54 b/Data/big-data/54 similarity index 100% rename from Documents/big-data/54 rename to Data/big-data/54 diff --git a/Documents/big-data/55 b/Data/big-data/55 similarity index 100% rename from Documents/big-data/55 rename to Data/big-data/55 diff --git a/Documents/big-data/56 b/Data/big-data/56 similarity index 100% rename from Documents/big-data/56 rename to Data/big-data/56 diff --git a/Documents/big-data/57 b/Data/big-data/57 similarity index 100% rename from Documents/big-data/57 rename to Data/big-data/57 diff --git a/Documents/big-data/58 b/Data/big-data/58 similarity index 100% rename from Documents/big-data/58 rename to Data/big-data/58 diff --git a/Documents/big-data/59 b/Data/big-data/59 similarity index 100% rename from Documents/big-data/59 rename to Data/big-data/59 diff --git a/Documents/big-data/6 b/Data/big-data/6 similarity index 100% rename from Documents/big-data/6 rename to Data/big-data/6 diff --git a/Documents/big-data/60 b/Data/big-data/60 similarity index 100% rename from Documents/big-data/60 rename to Data/big-data/60 diff --git a/Documents/big-data/61 b/Data/big-data/61 similarity index 100% rename from Documents/big-data/61 rename to Data/big-data/61 diff --git a/Documents/big-data/62 b/Data/big-data/62 similarity index 100% rename from Documents/big-data/62 rename to Data/big-data/62 diff --git a/Documents/big-data/63 b/Data/big-data/63 similarity index 100% rename from Documents/big-data/63 rename to Data/big-data/63 diff --git a/Documents/big-data/64 b/Data/big-data/64 similarity index 100% rename from Documents/big-data/64 rename to Data/big-data/64 diff --git a/Documents/big-data/65 b/Data/big-data/65 similarity index 100% rename from Documents/big-data/65 rename to Data/big-data/65 diff --git a/Documents/big-data/66 b/Data/big-data/66 similarity index 100% rename from Documents/big-data/66 rename to Data/big-data/66 diff --git a/Documents/big-data/67 b/Data/big-data/67 similarity index 100% rename from Documents/big-data/67 rename to Data/big-data/67 diff --git a/Documents/big-data/68 b/Data/big-data/68 similarity index 100% rename from Documents/big-data/68 rename to Data/big-data/68 diff --git a/Documents/big-data/69 b/Data/big-data/69 similarity index 100% rename from Documents/big-data/69 rename to Data/big-data/69 diff --git a/Documents/big-data/7 b/Data/big-data/7 similarity index 100% rename from Documents/big-data/7 rename to Data/big-data/7 diff --git a/Documents/big-data/70 b/Data/big-data/70 similarity index 100% rename from Documents/big-data/70 rename to Data/big-data/70 diff --git a/Documents/big-data/71 b/Data/big-data/71 similarity index 100% rename from Documents/big-data/71 rename to Data/big-data/71 diff --git a/Documents/big-data/72 b/Data/big-data/72 similarity index 100% rename from Documents/big-data/72 rename to Data/big-data/72 diff --git a/Documents/big-data/73 b/Data/big-data/73 similarity index 100% rename from Documents/big-data/73 rename to Data/big-data/73 diff --git a/Documents/big-data/74 b/Data/big-data/74 similarity index 100% rename from Documents/big-data/74 rename to Data/big-data/74 diff --git a/Documents/big-data/75 b/Data/big-data/75 similarity index 100% rename from Documents/big-data/75 rename to Data/big-data/75 diff --git a/Documents/big-data/76 b/Data/big-data/76 similarity index 100% rename from Documents/big-data/76 rename to Data/big-data/76 diff --git a/Documents/big-data/77 b/Data/big-data/77 similarity index 100% rename from Documents/big-data/77 rename to Data/big-data/77 diff --git a/Documents/big-data/78 b/Data/big-data/78 similarity index 100% rename from Documents/big-data/78 rename to Data/big-data/78 diff --git a/Documents/big-data/79 b/Data/big-data/79 similarity index 100% rename from Documents/big-data/79 rename to Data/big-data/79 diff --git a/Documents/big-data/8 b/Data/big-data/8 similarity index 100% rename from Documents/big-data/8 rename to Data/big-data/8 diff --git a/Documents/big-data/80 b/Data/big-data/80 similarity index 100% rename from Documents/big-data/80 rename to Data/big-data/80 diff --git a/Documents/big-data/81 b/Data/big-data/81 similarity index 100% rename from Documents/big-data/81 rename to Data/big-data/81 diff --git a/Documents/big-data/82 b/Data/big-data/82 similarity index 100% rename from Documents/big-data/82 rename to Data/big-data/82 diff --git a/Documents/big-data/83 b/Data/big-data/83 similarity index 100% rename from Documents/big-data/83 rename to Data/big-data/83 diff --git a/Documents/big-data/84 b/Data/big-data/84 similarity index 100% rename from Documents/big-data/84 rename to Data/big-data/84 diff --git a/Documents/big-data/85 b/Data/big-data/85 similarity index 100% rename from Documents/big-data/85 rename to Data/big-data/85 diff --git a/Documents/big-data/86 b/Data/big-data/86 similarity index 100% rename from Documents/big-data/86 rename to Data/big-data/86 diff --git a/Documents/big-data/87 b/Data/big-data/87 similarity index 100% rename from Documents/big-data/87 rename to Data/big-data/87 diff --git a/Documents/big-data/88 b/Data/big-data/88 similarity index 100% rename from Documents/big-data/88 rename to Data/big-data/88 diff --git a/Documents/big-data/89 b/Data/big-data/89 similarity index 100% rename from Documents/big-data/89 rename to Data/big-data/89 diff --git a/Documents/big-data/9 b/Data/big-data/9 similarity index 100% rename from Documents/big-data/9 rename to Data/big-data/9 diff --git a/Documents/big-data/90 b/Data/big-data/90 similarity index 100% rename from Documents/big-data/90 rename to Data/big-data/90 diff --git a/Documents/big-data/91 b/Data/big-data/91 similarity index 100% rename from Documents/big-data/91 rename to Data/big-data/91 diff --git a/Documents/big-data/92 b/Data/big-data/92 similarity index 100% rename from Documents/big-data/92 rename to Data/big-data/92 diff --git a/Documents/big-data/93 b/Data/big-data/93 similarity index 100% rename from Documents/big-data/93 rename to Data/big-data/93 diff --git a/Documents/big-data/94 b/Data/big-data/94 similarity index 100% rename from Documents/big-data/94 rename to Data/big-data/94 diff --git a/Documents/big-data/95 b/Data/big-data/95 similarity index 100% rename from Documents/big-data/95 rename to Data/big-data/95 diff --git a/Documents/big-data/96 b/Data/big-data/96 similarity index 100% rename from Documents/big-data/96 rename to Data/big-data/96 diff --git a/Documents/big-data/97 b/Data/big-data/97 similarity index 100% rename from Documents/big-data/97 rename to Data/big-data/97 diff --git a/Documents/big-data/98 b/Data/big-data/98 similarity index 100% rename from Documents/big-data/98 rename to Data/big-data/98 diff --git a/Documents/big-data/99 b/Data/big-data/99 similarity index 100% rename from Documents/big-data/99 rename to Data/big-data/99 diff --git a/Documents/small-data/0 b/Data/small-data/0 similarity index 100% rename from Documents/small-data/0 rename to Data/small-data/0 diff --git a/Documents/small-data/1 b/Data/small-data/1 similarity index 100% rename from Documents/small-data/1 rename to Data/small-data/1 diff --git a/Documents/small-data/2 b/Data/small-data/2 similarity index 100% rename from Documents/small-data/2 rename to Data/small-data/2 diff --git a/Documents/small-data/3 b/Data/small-data/3 similarity index 100% rename from Documents/small-data/3 rename to Data/small-data/3 diff --git a/Documents/small-data/4 b/Data/small-data/4 similarity index 100% rename from Documents/small-data/4 rename to Data/small-data/4 diff --git a/Documents/small-data/5 b/Data/small-data/5 similarity index 100% rename from Documents/small-data/5 rename to Data/small-data/5 diff --git a/Documents/small-data/6 b/Data/small-data/6 similarity index 100% rename from Documents/small-data/6 rename to Data/small-data/6 diff --git a/Documents/small-data/7 b/Data/small-data/7 similarity index 100% rename from Documents/small-data/7 rename to Data/small-data/7 diff --git a/Documents/small-data/8 b/Data/small-data/8 similarity index 100% rename from Documents/small-data/8 rename to Data/small-data/8 diff --git a/Examples/BakingAndEating.c b/Examples/BakingAndEating.c new file mode 100644 index 0000000..129a749 --- /dev/null +++ b/Examples/BakingAndEating.c @@ -0,0 +1,117 @@ +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#define NUM_THREADS 3 + +//the mutex +pthread_mutex_t Lock = PTHREAD_MUTEX_INITIALIZER; +pthread_cond_t PiesToEat = PTHREAD_COND_INITIALIZER; + +//Shared Resources +int Done[NUM_THREADS]; +int PiecesOfPie; + +void * baker() +{ + int i, AllDone; + while (!AllDone) + { + AllDone = 1; + for (i = 0; i < NUM_THREADS; i++) + AllDone= (Done[i] && AllDone); //clever + + if(AllDone) + { + fprintf(stderr,"All Eaters are done\n"); + } + else + { + pthread_mutex_lock(&Lock); + + if (PiecesOfPie == 0) + { + PiecesOfPie += 2; + fprintf(stderr,"Baked 2 Pieces of Pie\n"); + } + + //Broadcast to all threads that pies have been made + pthread_cond_broadcast(&PiesToEat); + pthread_mutex_unlock(&Lock); + } + + usleep(100); + } + + fprintf(stderr,"Done Baking\n"); + pthread_exit(NULL); +} + +void * eater(void * TID) +{ + long threadID = (long) TID; + int PiecesEaten = 0; // Control Pieces Eaten by Thread + + Done[threadID] = 0; + + while (PiecesEaten < 2) + { + pthread_mutex_lock(&Lock); + + if (PiecesOfPie == 0) + { + fprintf(stderr,"No pieces of pie for thread %ld\n", threadID); + pthread_cond_wait(&PiesToEat, &Lock); + fprintf(stderr,"Thread %ld waited for baker\n", threadID); + } + else + { + PiecesOfPie--; + PiecesEaten++; + fprintf(stderr,"Thread %ld ate a piece of pie\n", threadID); + } + + pthread_mutex_unlock(&Lock); + + usleep(1); + } + + fprintf(stderr,"Thread %ld has eaten 2 pieces of pie\n", threadID); + + Done[threadID] = 1; + + pthread_exit(NULL); +} + +int main() +{ + pthread_t threads[NUM_THREADS]; + pthread_t PieBaker; + + PiecesOfPie = 0; + + //Create Eaters + long i; + for(i = 0; i < NUM_THREADS; i++) + { + fprintf(stderr,"IN MAIN: creating thread #%lu\n", i); + //create has 4 arguments: + //1 - Ptr of thread + //2 - Don't care, NULL + //3 - Name of Void * method + //4 - Something to pass as an argument to thread's method + pthread_create(&threads[i], NULL, eater, (void *)i); + } + + //Create Baker + fprintf(stderr,"IN MAIN: creating the baker\n"); + pthread_create(&PieBaker, NULL, baker, NULL); + + /* Last thing that main() should do */ + pthread_mutex_destroy(&Lock); + pthread_join(PieBaker, NULL); //Waits for the baker thread to end. + //Could wait for eaters as well but Baker waits for eaters anyway. + + printf("Done in main\n"); + return 0; +} diff --git a/Examples/PthreadExitWithReturnData.c b/Examples/PthreadExitWithReturnData.c new file mode 100644 index 0000000..1278b6a --- /dev/null +++ b/Examples/PthreadExitWithReturnData.c @@ -0,0 +1,67 @@ +// Demo of thread join and exit with data passing +// Mystery of C pointers remains ineffable ? +// R. Trenary, 3/13/14 +// +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#define MaxThread 100 + +typedef struct DataStruct + { + int count; // I say DataStruct and mean struct DataStruct + int * DataPtr; + } + DataStruct; + +//================================== +// A THREAD +//================================== +void *ThreadA(void * PassedPtr) +{ int NumPlaces,i; + DataStruct *MyThreadStructPtr; // Contrived ? + MyThreadStructPtr = (DataStruct *) PassedPtr; + + NumPlaces = ++( MyThreadStructPtr-> count); + fprintf(stdout,"In Thread with Incremented Count of %d \n", NumPlaces); + MyThreadStructPtr->DataPtr = malloc( NumPlaces * sizeof (int)); + + for (i=0;i<NumPlaces;i++) MyThreadStructPtr->DataPtr[i] =10* i; + + fprintf(stdout,"Thread is done and said so \n"); + pthread_exit(MyThreadStructPtr); +} + +int main (int argc, char *argv[]) +{ + pthread_t threadA ; // need to name the thread + pthread_t *threadPtr; + int rc, i; // return code and working index + + DataStruct MainDataStruct; // A Thing + DataStruct *MainDataStructPtr; // And a pointer to a thing + + MainDataStruct.count = 5; // filled with data used in Thread + +// Send to a thread for use + + fprintf(stdout,"In main: creating thread with count %d \n", MainDataStruct.count); + if ( (rc = pthread_create(&threadA , NULL, ThreadA, &MainDataStruct))) + {fprintf(stdout,"ERROR; return code from pthread_create() for ThreadA is %d\n", rc); + exit(-1); } + // Send it off to do some work + + + // and block until it finishes + + (void) pthread_join(threadA , (void *) &MainDataStructPtr); + fprintf(stdout,"Upon Join %d is Count \n", (int)((*MainDataStructPtr).count)); + fprintf(stdout,"Back From Join with MainDataStruct Filled ?\n"); + + for (i = 0; i < (*MainDataStructPtr).count; i++) + fprintf(stdout,"%d\n",(*MainDataStructPtr).DataPtr[i]); + + + +// exit(0); +} diff --git a/Examples/StringThreadEx1.c b/Examples/StringThreadEx1.c new file mode 100644 index 0000000..c039ee7 --- /dev/null +++ b/Examples/StringThreadEx1.c @@ -0,0 +1,39 @@ +/// Taken from Posix Tutorial -- https://computing.llnl.gov/tutorials/pthreads/ +// Example demonstrates race condition +// R. Trenary, 1/26/12 +// +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define NUM_THREADS 5 + +void *GoodbyeDennis(void *FileName) +{ + char * File = malloc(strlen((char *) FileName)+1); + strncpy(File,(char *) FileName,strlen( (char *) FileName)+1); + + printf("Goodbye, Dennis ! It's me, thread %s!\n", File); + pthread_exit(NULL); +} + +int main (int argc, char *argv[]) +{ + pthread_t threads[NUM_THREADS]; + int rc; + long t; + char * FakeFile = "FileName"; + for(t=0; t<NUM_THREADS; t++){ + printf("In main: creating thread %ld\n", t); + rc = pthread_create(&threads[t], NULL, GoodbyeDennis, (void *)FakeFile); + if (rc){ + printf("ERROR; return code from pthread_create() is %d\n", rc); + exit(-1); + } + } + + /* Last thing that main() should do */ + pthread_exit(NULL); +} + + diff --git a/Examples/ThreadEx1.c b/Examples/ThreadEx1.c new file mode 100644 index 0000000..035a84e --- /dev/null +++ b/Examples/ThreadEx1.c @@ -0,0 +1,57 @@ +/// Taken from Posix Tutorial -- https://computing.llnl.gov/tutorials/pthreads/ +// Example demonstrates race condition +// R. Trenary, 1/26/12 +// +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define NUM_THREADS 5 + +void *GoodbyeDennis(void *threadid) +{long tid; + //char * File = malloc(strlen((char *) FileName)+1); + //strncpy(File,(char *) FileName,strlen( (char *) FileName)+1); + tid = (long)threadid; + printf("Goodbye, Dennis ! It's me, thread #%ld!\n", tid); + pthread_exit(NULL); +} +void *SomeThread(void *SomeArg) +{ +char *SomeName; +SomeName=(char * )SomeArg; +printf("%s SomeName in thread\n",SomeName); +pthread_exit(NULL); + +} + +int main (int argc, char *argv[]) +{ + pthread_t threads[NUM_THREADS]; + int rc; long t; + pthread_t *T; T=(pthread_t *) malloc(sizeof (pthread_t)); +rc = pthread_create(T,NULL, SomeThread, (void *) "string"); + + //char * FakeFile = "FileName"; For another day + for(t=0; t<NUM_THREADS; t++){ + printf("In main: creating thread %ld\n", t); + rc = pthread_create(&threads[t], NULL, GoodbyeDennis, (void *)t); + if (rc){ + printf("ERROR; return code from pthread_create() is %d\n", rc); + exit(-1); + } + } +// testing create syntax + + + /* Last thing that main() should do */ + pthread_exit((void *)42); + return 42; +} + + + + + + + diff --git a/Examples/ThreadEx2.c b/Examples/ThreadEx2.c new file mode 100644 index 0000000..1357e11 --- /dev/null +++ b/Examples/ThreadEx2.c @@ -0,0 +1,56 @@ +/// Modifications to Code Taken from Posix Tutorial +// https://computing.llnl.gov/tutorials/pthreads/ +// Example demonstrates join and thread creating thread +// R. Trenary, 1/26/12 +// +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + + +void *WorkerStart(void *threadid); + +void *BossStart(void *threadid) +{ pthread_t Worker1,Worker2; + int rc; + long tid,t; + void *status; + t = (long)threadid; + printf("I am the boss and will create a worker\n"); + + rc = pthread_create(&Worker1, NULL, WorkerStart, (void *)(t+1)); + if (rc) { printf("failed to create woiker\n");exit(-1); } + rc = pthread_create(&Worker2, NULL, WorkerStart, (void *)(t+2)); + if (rc) { printf("failed to create woiker\n");exit(-1); } + pthread_join(Worker1, &status); pthread_join(Worker2, &status); + printf("I am the boss and the worker %ld has finished \n", t); + pthread_exit(NULL); +} +void *WorkerStart(void *threadid) +{ + long tid; + + tid = (long)threadid; + printf("I am the worker %ld and will work then meet the Boss again\n", tid); + usleep(1000); + printf("Off to meet the boss ! \n"); + pthread_exit(NULL); +} + +int main (int argc, char *argv[]) +{ + pthread_t Boss; + int rc; + long t; + t = 10; + printf("In main: creating thread %ld\n", t); + rc = pthread_create(&Boss, NULL, BossStart, (void *)t); + if (rc) { printf("failed to create boss\n");exit(-1); } + pthread_join(Boss,(NULL)); + /* Last thing that main() should do */ +// pthread_exit(); + return t+1; +} + + diff --git a/Examples/ThreadEx3.c b/Examples/ThreadEx3.c new file mode 100644 index 0000000..b9658e5 --- /dev/null +++ b/Examples/ThreadEx3.c @@ -0,0 +1,109 @@ + +/// Taken from Posix Tutorial -- https://computing.llnl.gov/tutorials/pthreads/ +// Example demonstrates Mutex control over Pies. Now add a Pie Producer +// And then a conditional ? +// R. Trenary, 1/26/12 +// +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#define NUM_THREADS 5 +int Done [NUM_THREADS]; // A flag for each thread. AND them + // and one unfinished means we still have work + +pthread_mutex_t MyMutex= PTHREAD_MUTEX_INITIALIZER; // A mutex and a cond (itional) +pthread_cond_t PiesToEat= PTHREAD_COND_INITIALIZER; // Initialized + +int PieceOfPies; // Important shared variable + +//================================== +// BAKER THREAD +//================================== +void *PieBaking(void *threadid) // THE BAKER +{int i, AllDone; +int rc ; // Return Code +while (1) +{ AllDone=1; + for (i=0;i<NUM_THREADS;i++) AllDone= ( Done[i] && AllDone); + if (AllDone) {printf("All Eaters are done \n"); break;} + + do {rc = pthread_mutex_trylock(&MyMutex); // does this lock if successful ? + } while (rc !=0); + if (PieceOfPies == 0) {PieceOfPies +=2; + printf("Baked a couple of of pies\n"); + } + // make a couple of pies if needed + + + pthread_cond_broadcast(&PiesToEat); + pthread_mutex_unlock(&MyMutex); +} + printf("Done Baking\n"); + pthread_exit(NULL); +} +// ================================== +// EATER THREAD +// ================================== +void *PieEating(void *threadid) +{ + long tid; + int rc = -1; // Initialize to not acquired + tid = * ((long *) threadid); + int PiecesEaten = 0; // Control Pieces Eaten by Thread + Done[tid] = 0; // Not Done + while (PiecesEaten < 2) + { + while ( rc !=0 ) + { rc = pthread_mutex_trylock(&MyMutex); // will return non zero if not acquired + usleep(100); // sleep and try again + } + printf(" Thread %lu acquired lock \n", tid); + // pthread_mutex_lock(&MyMutex); + if (PieceOfPies == 0) (pthread_cond_wait(&PiesToEat, &MyMutex)); + printf("Eating pie for Dennis. It's me, thread #%ld!\n", tid); + PieceOfPies--; // critical section + pthread_mutex_unlock(&MyMutex); + // and sleep some of it off + usleep(100); + rc = -1; + printf("%u available piece of pies \n",PieceOfPies); + PiecesEaten++; // Ate a piece of pie + } + Done[tid] = 1; // All done + printf("Thread %lu is done and said so \n",tid); + pthread_exit(NULL); +} + +int main (int argc, char *argv[]) +{ + pthread_t threads[NUM_THREADS]; + pthread_t PieBaker; + int rc; + long t; + long *Tptr[NUM_THREADS]; + PieceOfPies = 0; + for(t=0; t<NUM_THREADS; t++) + { Tptr[t] = (long *) malloc(sizeof(long)); + (*Tptr[t]) = (long) t; + printf("In main: creating thread %lu\n", t); + rc = pthread_create(&threads[t], NULL, PieEating, (void *)Tptr[t]); + if (rc){ + printf("ERROR; return code from pthread_create() for eaters is %d\n", rc); + exit(-1); } + } + rc = pthread_create(&PieBaker, NULL, PieBaking, (void *)t); + if (rc){ + printf("ERROR; return code from pthread_create() for baker is %d\n", rc); + exit(-1);} + + printf("looks like pies are done cooking\n"); + /* Last thing that main() should do */ + pthread_mutex_destroy(&MyMutex); + pthread_cond_destroy(&PiesToEat); + pthread_exit(NULL); + printf("Done in main\n"); + exit(0); +} + + + -- GitLab