분류 전체보기
-
C/C++ write()C,C++ & Linux 2020. 5. 14. 14:23
write(2) 함수 기능 파일에 write 하는 시스템 함수입니다. 함수 원형 #include #include ssize_t write(int fd, const void *buf, size_t nbytes); 매개변수 fd 대상 파일 디스크립터 buf 쓰고자 하는 데이터가 담긴 버퍼 nbytes 쓰고자 하는 데이터의 길이 ( buf의 길이보다 길어선 안됨 ) 반환값 성공 시 실제로 쓰여진 데이터의 길이 리턴 에러 시 -1 리턴 후 errno 설정 -1 이 아니더라도 자신이 쓰고자 한 데이터의 길이 nbytes 보다 적게 쓰여졌다면 에러라고 볼 수 있습니다. 예제 #include #include #include #include // for open #include #include #define BUFFE..
-
C/C++ close() 함수C,C++ & Linux 2020. 5. 14. 13:24
close(2) 함수 기능 open으로 열었던 파일을 닫아주는 함수입니다. 하나의 프로세스에서 너무 많은 파일을 열게되면 시스템 자원을 낭비하게 되기 때문에 사용하지 않는 파일은 닫아주는 것이 좋습니다. 단 프로세스가 종료되면 파일은 자동으로 닫히기 때문에 프로세스 전반적으로 이용하는 파일의 경우에는 수동으로 닫아주지 않아도 됩니다. 함수 원형 #include int close(int fd); 매개변수 fd 닫고자 하는 파일의 파일 디스크립터 반환값 성공 시 0 리턴 실패 시 -1 리턴 후 errno 설정 예제 #include #include #include #include // for open #include #include int main() { char *filename = "ssu_test.txt..
-
안드로이드 HandlerThread안드로이드 2020. 5. 13. 23:23
오늘은 HandlerThread 에 대해 알아볼거에요 메인스레드에는 Looper와 MessageQueue 가 있어서 메시지들을 처리한다고 배웠어요 안드로이드는 작업스레드도 Looper와 MessageQueue 를 갖게 만들 수 있어요 이를 위한 클래스가 HandlerThread에요 사용법 HandlerThread handlerThread = new HandlerThread("이름"); // Looper 동작 시작 handlerThread.start(); // handlerThread(작업스레드)의 Looper 를 내부적으로 가리키는 핸들러 생성 // 이 핸들러는 post or sendMessage 호출 시 // 메인스레드의 Looper가 아닌 handlerThread의 looper로 메시지를 보내게 된다..
-
안드로이드 CountDownTimer안드로이드 2020. 5. 13. 23:04
오늘은 안드로이드 CountDownTimer 에 대해 알아볼거에요 일정 주기로 어떤 작업을 해야할 때 편하게 쓸 수 있어요. 예를 들면 타이머..? 같은거는 1초 주기로 ++ 하는 작업인거죠 워낙 간단해서 예제 보고 설명할게요 package kr.co.sample; import android.os.Bundle; import android.os.CountDownTimer; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { Button btn; // 타이머 객체 CountDow..
-
Android AsyncTask안드로이드 2020. 5. 10. 12:20
지난 글에서 안드로이드의 메인 스레드와 작업 스레드의 역할과 통신에 대해서 알아봤다면 이번에는 이를 편하게 해주는 Helper Class 중 하나인 AsyncTask 에 대해서 알아볼거에요 메소드 메인스레드에서 동작하는 메소드 onPreExecute() onProgressUpdate() onCancelled() onPostExecute() 작업스레드에서 동작하는 메소드 doInBackground() onPreExecute() 작업 시작 전에 실행되는 메소드로, 주로 변수 초기화 작업이 이루어집니다. doInBackground() 작업 스레드가 실행시키는 메소드로 Looping 기능이 없어서 자체적으로 무한 루프를 돌게 만들어야 합니다. 리턴되면 작업 스레드도 같이 사라집니다. onProgressUpdat..
-
안드로이드 Looper, Message Queue, Handler안드로이드 2020. 5. 9. 23:31
안드로이드 멀티스레드 프로그래밍에 대해 제대로 이해하려면 Looper 에 대해서 제대로 이해하고 있어야해요 구조 메인스레드 내부적으로 Looper 객체가 있습니다. Looper 는 무한 루프를 돈다고하여 Looper 라는 이름이 붙었는데요 무한 루프를 돌면서 하는 일이 뭘까요? 하는 일 메시지 큐에서 메시지를 꺼내어 읽고, 처리한다. 자 그럼 메시지 큐란게 뭔지 알아야겠죠? 메시지 큐 Looper 내부에 있는 Message Queue 는 메시지를 관리해주는 객체에요 그럼... 메시지는 뭔데...? 메시지 안드로이드에서 하나의 작은 처리 단위라고 생각하시면 돼요. 메시지 큐에 메시지를 넣으려면 Handler 객체를 사용해야 합니다. Handler 안에 Message 객체와 Looper 객체가 있습니다. M..
-
안드로이드 핸들러안드로이드 2020. 5. 9. 20:52
2020/05/09 - [Android & Kotlin] - 안드로이드 Looper, Message Queue 2020/05/09 - [Android & Kotlin] - 안드로이드 스레드 2020/05/09 - [Android & Kotlin] - 안드로이드 멀티스레드 이전 글들을 통해서 메인스레드에서 할 수 없는 일을 알아봤으니 이번에는 메인스레드만 할 수 있는 일에 대해 알아볼게요 안드로이드 단일 스레드 GUI 모델 안드로이드는 화면을 갱신하는 작업을 반드시 메인 스레드에서만 하도록 되어 있어요. 화면이라는 것도 굉장히 중요한 자원 중 하나에요 이런 자원에 대해서 여러 스레드가 동시에 접근하게 된다면 버튼을 그리다가 표를 그리고.. 그러다가 이미지를 그리고.. 그러면 자원 자체가 꼬이기 쉬워요. 그..
-
안드로이드 멀티스레드안드로이드 2020. 5. 9. 17:34
2020/05/09 - [Android & Kotlin] - 안드로이드 스레드에 이어서 본격적인 멀티스레드에 대해서 알아볼게요 지난 글에서 스레드간에 자원을 공유하는것이 가능은 하나 원하는대로 되지는 않는다는것은 보았어요. 메인 스레드와 작업 스레드(UI-Thread and Worker Thread) 메인 스레드 혹은 ui 스레드라고 불리우는 이 스레드는 우리가 앱을 실행시키면 프로세스가 자동으로 만들어줘요 따라서 개발자가 별도의 작업 스레드를 만들지 않는 한 모든 코드는 메인 스레드에서 동작한다. 라고 보면 됩니다. 메인스레드가 처리할 수 없는 작업이 있기 때문에 우리는 작업 스레드에 대해 배워야 하는데요. package kr.co.sample; import androidx.appcompat.app.A..