스레드를 다룰 때 까다로운 것 중 하나는 lock이 대체 의도치 않게 어디에 걸렸지? 일 겁니다. 링크에서도 다루고 있으니, 한 번 정도는 읽어보셔도 도움이 많이 되실 듯 싶습니다. 먼저, 예제 프로그램 1을 보겠습니다. worker1과 worker2는 간단한 일을 합니다. 5초동안 sleep을 하고 끝냅니다. 그리고, 5번째 줄과 15번째 줄에, na가 가리키고 있는 객체에 lock을 겁니다. 즉, lock을 거는 대상은, Worker1의 na가 가리키는 Object, Worker2의 na가 가리키는 Object입니다. 다음에 Main 클래스는 그냥 Worker1과 Worker2를 돌리고, 끝날 때 까지 기다린 다음에, 프로그램이 끝날 때 까지 걸린 시간을 측정합니다. 이게 다입니다. 위 프로그램의 실..
string 검색 결과
문자열 다룰 때, strcpy 함수를 많이 쓰곤 했습니다. 그런데, stpcpy 정도는 알아두어도 크게 손해볼 거 같지는 않았습니다. 백준의 몇몇 문자열 관련 문제들을 풀어보면서 뼈저리게 느끼기도 했고요. man 페이지를 읽어보면 공부할 만한 키워드들이 상당히 많이 나오는데요. 그것들에 대한 자세한 내용들은 하나 하나 시스템에 대해 공부하면서 파 보기로 합시다. 먼저, stpcpy는 strcpy와 하는 일이 매우 유사해 보입니다. src가 가리키는 문자열의 내용을 dest에 복사한다는 것도 같아 보이고요. 그런데, 오늘 배울 함수는 리턴 값이 its end라고 합니다. 이게 무슨 이야기인지 잘 모르겠군요. 코드를 하나 작성해 봅시다. 예제 프로그램은 위와 같습니다. 실행 결과는 어떻게 나왔을까요? 이렇게..
string의 c_str 함수는 제가 string을 C style의 문자열로 바꿀 때 많이 썼던 함수입니다. 이 메서드는 const char *를 리턴합니다. 내용이 변경되면 안 되는 제약 조건을 가진, char형 포인터를 리턴합니다. 일단, string의 구조에 대해서 간략하게 설명을 하고, c_str()에 대한 설명을 하도록 하겠습니다. Stri uffer, StringBuilder, C++의 String 등이 있습니다. C++의 스트링 클래스에는 capacity와 size가 있는데요. 이는 동적 배열이 있는 Class는 보통 이 두 메서드를 구현을 많이 하는 편입니다. append 100만번 하면 시간이 오래 걸리는지 안 걸리는지 체크만 해도 되고요. 실제로 내부 구조를 보면, string 클래스 ..
저는 string을 쓸 때, char *형으로 바꾸고, string.h에 있는 문자열 함수를 주로 썼습니다. 그런데, 이것도 생각보다 귀찮더라고요. 이번 시간에는 의 find 함수에 대해서 알아보도록 하겠습니다. 레퍼런스에 보면 꽤 많은 원형이 있는데, 사실 둘만 알면 크게 어렵지 않아요. size_t find(const string &s|const char *s|char ch, size_t pos = 0); 첫 번째 인자로 string을 받거나, char형 포인터, 그러니까 문자열을 받거나, 문자 하나를 받습니다. 2번째 인자로 어느 위치에서부터 찾을 건지를 명시를 하는데요. 간단하게 말하면, string으로부터, 패턴이 매치되는 최초 위치를 찾는 함수입니다. 예제 프로그램을 보겠습니다. string이..
String의 indexOf는 어떤 식으로 동작할까요? indexOf를 호출하면, 내부에서, 인자를 7개를 받는 함수가 호출이 되는데요. 1번째 source는 어떠한 문자열에서 찾을 것인지, target은 패턴을 의미합니다. 예를 들어서, "abababb"에서 "ab"를 찾는다고 한다면, "abababb"는 source가 되고, target은 "ab"가 됩니다. fromIndex는, string의 어느 위치부터 탐색을 할 것인지에 대한 정보를 담고 있는데요. 예를 들어서 string이 "abcde"라고 하고, 1번째 위치부터 탐색한다면 fromIndex는 1이 됩니다. 아래 코드들을 봅시다. 뭔가 조금 복잡해 보이는데요. fromindex가, string에서 어느 위치부터 탐색을 시작할 것인지를 나타냅니..
최근댓글