diff --git a/mutex/1.mytwothread.c b/multi_Thread/1.mytwothread.c
similarity index 100%
rename from mutex/1.mytwothread.c
rename to multi_Thread/1.mytwothread.c
diff --git a/mutex/2.mymutexthread_st.c b/multi_Thread/2.mymutexthread_st.c
similarity index 100%
rename from mutex/2.mymutexthread_st.c
rename to multi_Thread/2.mymutexthread_st.c
diff --git a/multi_Thread/ledThreads/0.mp4 b/multi_Thread/ledThreads/0.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..a2f0b7f5cffabb5991ad53a762e46d617ca05f43
Binary files /dev/null and b/multi_Thread/ledThreads/0.mp4 differ
diff --git a/multi_Thread/ledThreads/1.mp4 b/multi_Thread/ledThreads/1.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..9aa9465d1568c0ff6a8e7f2b6a23401212612e2c
Binary files /dev/null and b/multi_Thread/ledThreads/1.mp4 differ
diff --git a/multi_Thread/ledThreads/2.mp4 b/multi_Thread/ledThreads/2.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..9bf1d1a35e57c0502457ed0b82939178ed3e6710
Binary files /dev/null and b/multi_Thread/ledThreads/2.mp4 differ
diff --git a/multi_Thread/ledThreads/2020_08_14.md b/multi_Thread/ledThreads/2020_08_14.md
new file mode 100644
index 0000000000000000000000000000000000000000..43b90a60caab027cffdbd416214a441d7d78dbca
--- /dev/null
+++ b/multi_Thread/ledThreads/2020_08_14.md
@@ -0,0 +1,122 @@
+# 2020_08_14_multiThreading
+
+<P>라즈베리파이에 LED 3개(빨강, 노랑, 초록)을 연결하여 입력에 따라 이들을 동시에 제어하는 응용 프로그램 작성</p>
+
+## 0. Conditons & Usage
+
+#### Condition:
+
+빨강색 LED는 1초 간격으로 ON/OFF를 반복한다.
+
+초록색 LED는 2초 간격으로 ON/OFF를 반복한다.
+
+노랑색 LED는 3초 간격으로 ON/OFF를 반복한다.
+<br>
+
+#### Usage:
+<br>
+<p>
+입력형식은 다음과 같다.
+
+<strong>./led_main [control] [repetition]</strong>
+</p><br>
+
+<p>
+control : 제어할 LED 조합을 결정. 아무 값도 전달하지 않거나 1~3까지의 자연수
+
+1 : 빨강색 LED와 초록색 LED
+
+2 : 빨강색 LED와 노랑색 LED
+
+3 : 모든 3개의 LED
+</p><br>
+<p>
+repetition : 빨강색을 제외한 나머지 LED들의 ON/OFF 반복 횟수 결정. 아무 값도 전달하지 않거나 그 외의 자연수.
+
+입력값에 상관없이 항상 빨강색 LED는 1초 간격으로 10초간 ON/OFF를 반복한다.
+
+따라서 control과 repetition을 전달하지 않을 경우 빨강색 LED만 켜진다.
+</p><br>
+
+ex) ./led_main //빨강색 LED만 1초 간격으로 ON/OFF 반복<br>
+
+ex) ./led_main 1 5 //빨강색 LED는 1초 간격으로 10회on/off 반복, 초록색 LED는 2초 간격으로 5회 on/off.<br>
+
+ex) ./led_main 2 7 //빨강색 LED는 1초 간격으로 10회 on/off 반복, 노랑색 LED는 3초 간격으로 7회on/off.<br>
+
+ex) ./led_main 3 6//빨강색 LED는 1초 간격으로 10회on/off 반복, 초록색 LED는 2초간격으로, 노랑색 LED는3초 간격으로 각각 6회on/off.
+<br>
+
+## 1. Thread Functions
+
+```c
+
+void* led_red (void * args);
+void* led_green (void * args);
+void* led_yellow (void * args);
+
+```
+
+pthread_create를 통해 입력에 따라 Thread를 생성할 때 위 함수들을 전달한다.
+
+각 함수들은 반복 횟수를 void type pointer인 args를 통해 led의 ON/OFF를 제어한다.
+
+
+## 2. Makefile
+
+
+#### 2-1) Makefile을 작성하여 make
+
+<br><br>
+![image](/uploads/16b3b6c7205d54f60e62b9019c4fe245/image.png)
+<br><br>
+
+make를 입력한 후 생성된 응용 프로그램을 실행한다.<br>
+
+#### 2-2) CMake를 통한 Makefile 생성
+
+<br><br>
+![image](/uploads/13b2c5b53b7357a5cb57441318c3506e/image.png)
+<br><br>
+
+CMakeLists.txt를 작성한 후, cmake CMakeLists.txt를 입력한다.
+
+<strong>이때 주의할점은 파일명이 반드시 CMakeLists.txt 이어야한다는 점이다. </strong>
+
+<br><br>
+![image](/uploads/0e4037e63b8ce50195680ae6ee245943/image.png)
+<br><br>
+
+Makefile이 생성된 후, make를 입력하여 응용 프로그램을 생성하고 이를 실행한다. <br>
+
+
+## 3. Test
+
+<br><br>
+
+####  3-1) ./main
+
+<video>
+<source src = "0.mp4" type = "video/mp4">
+</video>
+<br><br>
+
+####  3-2) ./main 1 5
+
+<video>
+<source src = "1.mp4" type = "video/mp4">
+</video>
+<br><br>
+
+####  3-2) ./main 2 7
+
+<video>
+<source src = "2.mp4" type = "video/mp4">
+</video>
+<br><br>
+
+####  3-2) ./main 3 6
+
+<video>
+<source src = "3.mp4" type = "video/mp4">
+</video>
\ No newline at end of file
diff --git a/multi_Thread/ledThreads/3.mp4 b/multi_Thread/ledThreads/3.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..9bec26ea5940d2bdc8ab61057225f8b924d9977b
Binary files /dev/null and b/multi_Thread/ledThreads/3.mp4 differ
diff --git a/multi_Thread/ledThreads/CMakeLists.txt b/multi_Thread/ledThreads/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9662968736650809758dd183eb0c2efe6f13176d
--- /dev/null
+++ b/multi_Thread/ledThreads/CMakeLists.txt
@@ -0,0 +1,2 @@
+ADD_EXECUTABLE(led_main led_main.c led_green.c led_yellow.c)
+target_link_libraries( led_main pthread wiringPi )
\ No newline at end of file
diff --git a/multi_Thread/ledThreads/Makefile b/multi_Thread/ledThreads/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..dd72c73ff9e6960bed8d92245bcf979b63e2b5c6
--- /dev/null
+++ b/multi_Thread/ledThreads/Makefile
@@ -0,0 +1,122 @@
+SRCS = led_main.c led_green.c led_yellow.c
+OBJS = $(SRCS:.c=.o)
+cc = gcc
+link = -lpthread -lwiringPi
+
+led_main : $(OBJS)
+	$(cc) -o $@ $^ $(link)
+
+
+.o : 
+	$(cc) -c  $<
+
+
+clean:
+	-rm $(OBJS) 
+	rm led_main
+
+dep:
+	gccmakedep $(SRCS)
+# DO NOT DELETE
+led_main.o: led_main.c /usr/include/stdc-predef.h led.h \
+ /usr/include/stdio.h /usr/include/features.h \
+ /usr/include/arm-linux-gnueabihf/sys/cdefs.h \
+ /usr/include/arm-linux-gnueabihf/bits/wordsize.h \
+ /usr/include/arm-linux-gnueabihf/gnu/stubs.h \
+ /usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h \
+ /usr/lib/gcc/arm-linux-gnueabihf/6/include/stddef.h \
+ /usr/include/arm-linux-gnueabihf/bits/types.h \
+ /usr/include/arm-linux-gnueabihf/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h \
+ /usr/include/arm-linux-gnueabihf/bits/stdio_lim.h \
+ /usr/include/arm-linux-gnueabihf/bits/sys_errlist.h \
+ /usr/include/stdlib.h /usr/include/arm-linux-gnueabihf/bits/waitflags.h \
+ /usr/include/arm-linux-gnueabihf/bits/waitstatus.h \
+ /usr/include/arm-linux-gnueabihf/sys/types.h /usr/include/time.h \
+ /usr/include/endian.h /usr/include/arm-linux-gnueabihf/bits/endian.h \
+ /usr/include/arm-linux-gnueabihf/bits/byteswap.h \
+ /usr/include/arm-linux-gnueabihf/bits/byteswap-16.h \
+ /usr/include/arm-linux-gnueabihf/sys/select.h \
+ /usr/include/arm-linux-gnueabihf/bits/select.h \
+ /usr/include/arm-linux-gnueabihf/bits/sigset.h \
+ /usr/include/arm-linux-gnueabihf/bits/time.h \
+ /usr/include/arm-linux-gnueabihf/sys/sysmacros.h \
+ /usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h \
+ /usr/include/alloca.h \
+ /usr/include/arm-linux-gnueabihf/bits/stdlib-float.h \
+ /usr/include/string.h /usr/include/xlocale.h /usr/include/unistd.h \
+ /usr/include/arm-linux-gnueabihf/bits/posix_opt.h \
+ /usr/include/arm-linux-gnueabihf/bits/environments.h \
+ /usr/include/arm-linux-gnueabihf/bits/confname.h /usr/include/getopt.h \
+ /usr/include/pthread.h /usr/include/sched.h \
+ /usr/include/arm-linux-gnueabihf/bits/sched.h \
+ /usr/include/arm-linux-gnueabihf/bits/setjmp.h /usr/include/wiringPi.h
+led_green.o: led_green.c /usr/include/stdc-predef.h led.h \
+ /usr/include/stdio.h /usr/include/features.h \
+ /usr/include/arm-linux-gnueabihf/sys/cdefs.h \
+ /usr/include/arm-linux-gnueabihf/bits/wordsize.h \
+ /usr/include/arm-linux-gnueabihf/gnu/stubs.h \
+ /usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h \
+ /usr/lib/gcc/arm-linux-gnueabihf/6/include/stddef.h \
+ /usr/include/arm-linux-gnueabihf/bits/types.h \
+ /usr/include/arm-linux-gnueabihf/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h \
+ /usr/include/arm-linux-gnueabihf/bits/stdio_lim.h \
+ /usr/include/arm-linux-gnueabihf/bits/sys_errlist.h \
+ /usr/include/stdlib.h /usr/include/arm-linux-gnueabihf/bits/waitflags.h \
+ /usr/include/arm-linux-gnueabihf/bits/waitstatus.h \
+ /usr/include/arm-linux-gnueabihf/sys/types.h /usr/include/time.h \
+ /usr/include/endian.h /usr/include/arm-linux-gnueabihf/bits/endian.h \
+ /usr/include/arm-linux-gnueabihf/bits/byteswap.h \
+ /usr/include/arm-linux-gnueabihf/bits/byteswap-16.h \
+ /usr/include/arm-linux-gnueabihf/sys/select.h \
+ /usr/include/arm-linux-gnueabihf/bits/select.h \
+ /usr/include/arm-linux-gnueabihf/bits/sigset.h \
+ /usr/include/arm-linux-gnueabihf/bits/time.h \
+ /usr/include/arm-linux-gnueabihf/sys/sysmacros.h \
+ /usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h \
+ /usr/include/alloca.h \
+ /usr/include/arm-linux-gnueabihf/bits/stdlib-float.h \
+ /usr/include/string.h /usr/include/xlocale.h /usr/include/unistd.h \
+ /usr/include/arm-linux-gnueabihf/bits/posix_opt.h \
+ /usr/include/arm-linux-gnueabihf/bits/environments.h \
+ /usr/include/arm-linux-gnueabihf/bits/confname.h /usr/include/getopt.h \
+ /usr/include/pthread.h /usr/include/sched.h \
+ /usr/include/arm-linux-gnueabihf/bits/sched.h \
+ /usr/include/arm-linux-gnueabihf/bits/setjmp.h /usr/include/wiringPi.h
+led_yellow.o: led_yellow.c /usr/include/stdc-predef.h led.h \
+ /usr/include/stdio.h /usr/include/features.h \
+ /usr/include/arm-linux-gnueabihf/sys/cdefs.h \
+ /usr/include/arm-linux-gnueabihf/bits/wordsize.h \
+ /usr/include/arm-linux-gnueabihf/gnu/stubs.h \
+ /usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h \
+ /usr/lib/gcc/arm-linux-gnueabihf/6/include/stddef.h \
+ /usr/include/arm-linux-gnueabihf/bits/types.h \
+ /usr/include/arm-linux-gnueabihf/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h \
+ /usr/include/arm-linux-gnueabihf/bits/stdio_lim.h \
+ /usr/include/arm-linux-gnueabihf/bits/sys_errlist.h \
+ /usr/include/stdlib.h /usr/include/arm-linux-gnueabihf/bits/waitflags.h \
+ /usr/include/arm-linux-gnueabihf/bits/waitstatus.h \
+ /usr/include/arm-linux-gnueabihf/sys/types.h /usr/include/time.h \
+ /usr/include/endian.h /usr/include/arm-linux-gnueabihf/bits/endian.h \
+ /usr/include/arm-linux-gnueabihf/bits/byteswap.h \
+ /usr/include/arm-linux-gnueabihf/bits/byteswap-16.h \
+ /usr/include/arm-linux-gnueabihf/sys/select.h \
+ /usr/include/arm-linux-gnueabihf/bits/select.h \
+ /usr/include/arm-linux-gnueabihf/bits/sigset.h \
+ /usr/include/arm-linux-gnueabihf/bits/time.h \
+ /usr/include/arm-linux-gnueabihf/sys/sysmacros.h \
+ /usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h \
+ /usr/include/alloca.h \
+ /usr/include/arm-linux-gnueabihf/bits/stdlib-float.h \
+ /usr/include/string.h /usr/include/xlocale.h /usr/include/unistd.h \
+ /usr/include/arm-linux-gnueabihf/bits/posix_opt.h \
+ /usr/include/arm-linux-gnueabihf/bits/environments.h \
+ /usr/include/arm-linux-gnueabihf/bits/confname.h /usr/include/getopt.h \
+ /usr/include/pthread.h /usr/include/sched.h \
+ /usr/include/arm-linux-gnueabihf/bits/sched.h \
+ /usr/include/arm-linux-gnueabihf/bits/setjmp.h /usr/include/wiringPi.h
diff --git a/multi_Thread/ledThreads/led.h b/multi_Thread/ledThreads/led.h
new file mode 100644
index 0000000000000000000000000000000000000000..86b32bedcb6781b5bf7042c4edd4058b97e42f28
--- /dev/null
+++ b/multi_Thread/ledThreads/led.h
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <wiringPi.h>
+
+#define RED  4
+#define GREEN  5
+#define YELLOW  6
+
+#define Interval_RED 1
+#define Interval_GREEN 2
+#define Interval_YELLOW 3
+
+void* led_green (void * args);
+void* led_yellow (void * args);
\ No newline at end of file
diff --git a/multi_Thread/ledThreads/led_green.c b/multi_Thread/ledThreads/led_green.c
new file mode 100644
index 0000000000000000000000000000000000000000..52c5a259bc0d74633419f33200c36ef38e8bb54a
--- /dev/null
+++ b/multi_Thread/ledThreads/led_green.c
@@ -0,0 +1,17 @@
+#include "led.h"
+
+
+void* led_green(void * args)
+{
+
+	pinMode(GREEN, OUTPUT);
+	
+	for(int i=0; i < (int)args; i++) {
+		digitalWrite(GREEN, HIGH);
+		sleep(Interval_GREEN);
+		digitalWrite(GREEN, LOW);
+		sleep(Interval_GREEN);
+	}
+	
+    pthread_exit(NULL);
+}
\ No newline at end of file
diff --git a/multi_Thread/ledThreads/led_main.c b/multi_Thread/ledThreads/led_main.c
new file mode 100644
index 0000000000000000000000000000000000000000..7343c1e0a0a424f85c2f8217498a0a966ea16356
--- /dev/null
+++ b/multi_Thread/ledThreads/led_main.c
@@ -0,0 +1,69 @@
+#include "led.h"
+
+
+void* led_red(void * args)
+{
+    
+	pinMode(RED, OUTPUT);
+	
+	for(int i=0; i < 10; i++) {
+		digitalWrite(RED, HIGH);
+		sleep(1);
+		digitalWrite(RED, LOW);
+		sleep(1);
+	}
+	
+    pthread_exit(NULL);
+}
+
+int main(int argc, char *argv[])
+{
+	pthread_t t1, t2, t3;
+	
+    int set;
+    int reps;
+
+    wiringPiSetup();
+
+	if(argc < 2) {
+		
+        pthread_create(&t1, NULL, led_red, (void *)0);
+        pthread_exit(NULL);
+	}
+
+    set = atoi(argv[1]);
+	reps = atoi(argv[2]);
+
+    switch(set){
+
+        case 1:
+                pthread_create(&t1, NULL, led_red, (void *)0);
+                pthread_create(&t2, NULL, led_green, (void *)reps);
+                pthread_exit(NULL);
+                break;
+
+
+        case 2:
+
+                pthread_create(&t1, NULL, led_red, (void *)0);
+                pthread_create(&t2, NULL, led_yellow, (void *)reps);
+                pthread_exit(NULL);
+                break;
+
+
+        case 3:
+
+                pthread_create(&t1, NULL, led_red, (void *)0);
+                pthread_create(&t2, NULL, led_yellow, (void *)reps);
+                pthread_create(&t3, NULL, led_green, (void *)reps);
+                pthread_exit(NULL);
+                break;
+
+
+        default: break;
+
+
+    }
+	
+    return 0;
+}
\ No newline at end of file
diff --git a/multi_Thread/ledThreads/led_yellow.c b/multi_Thread/ledThreads/led_yellow.c
new file mode 100644
index 0000000000000000000000000000000000000000..ce9cb04c3155502a66e08b4618a28dac4a874686
--- /dev/null
+++ b/multi_Thread/ledThreads/led_yellow.c
@@ -0,0 +1,18 @@
+#include "led.h"
+
+
+void* led_yellow(void * args)
+{
+
+	pinMode(YELLOW, OUTPUT);
+	
+	for(int i=0; i < (int)args; i++) {
+		digitalWrite(YELLOW, HIGH);
+		sleep(Interval_YELLOW);
+		digitalWrite(YELLOW, LOW);
+		sleep(Interval_YELLOW);
+	}
+	
+    
+    pthread_exit(NULL);
+}
\ No newline at end of file