반응형

C 251

휘발성이 멀티스레드 C 또는 C++ 프로그래밍에서 유용하다고 생각되지 않는 이유는 무엇입니까?

휘발성이 멀티스레드 C 또는 C++ 프로그래밍에서 유용하다고 생각되지 않는 이유는 무엇입니까? 최근 투고한 이 답변에서 알 수 있듯이, 저는 이 답변의 효용(또는 그 결여)에 대해 혼란스러워하는 것 같습니다.volatile멀티패키지 프로그래밍 컨텍스트에서 사용합니다. 제가 이해한 바로는, 변수가 코드에 액세스 하는 코드의 제어 흐름 밖에서 변경될 수 있는 경우, 그 변수는 다음과 같이 선언되어야 합니다.volatile신호 핸들러, I/O 레지스터, 다른 스레드에 의해 수정된 변수 모두 그러한 상황을 구성합니다. 글로벌 int가 있는 경우foo,그리고.foo(적절한 머신명령어를 사용하여) 한 스레드에 의해 읽혀지고 다른 스레드에 의해 원자적으로 설정됩니다.읽기 스레드는 이 상황을 신호 핸들러에 의해 조정되..

programing 2022.06.28

-1에서 시작하는 루프는 아무것도 인쇄하지 않습니다.

-1에서 시작하는 루프는 아무것도 인쇄하지 않습니다. 이 질문에는 이미 답변이 있습니다. 수수께끼(C) (4개의 답변) 다음 C코드에 무슨 문제가 있나요? (3개의 답변) C 매크로 확장과 정수 산술에 대해 혼란스러움 (4개의 답변) for 루프 조건이 실패하는 이유는 무엇입니까? (5개의 답변) 배열 요소 인쇄 중 (6개의 답변) 닫힘4년 전에요. 이 프로그램은 의 요소를 출력하는 것으로 되어 있습니다.array단, 실행 시 출력은 표시되지 않습니다. #include #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0])) int array[] = { 23, 34, 12, 17, 204, 99, 16 }; int main() { int d; for (d =..

programing 2022.06.28

C# 퍼포먼스 - IntPtr 및 Marshal 대신 안전하지 않은 포인터 사용

C# 퍼포먼스 - IntPtr 및 Marshal 대신 안전하지 않은 포인터 사용 질문. C 플 C # c C # c 。C 앱은 서드파티 DLL에서 많은 함수를 호출하기 때문에 C#에 이러한 기능의 P/Invoke 래퍼를 작성했습니다.C해야 하는 C#을 사용했습니다.IntPtr및 네이티브 데이터(예: 및 구조)를 관리 변수에 복사합니다. 안타깝게도 C# 앱은 C 버전보다 훨씬 느리다는 것이 입증되었습니다.빠른 성능 분석 결과 위의 마샬링 기반 데이터 복사가 병목 현상인 것으로 나타났습니다.대신 포인터를 사용하도록 C# 코드를 고쳐 쓰는 것으로 속도를 높일 생각입니다.저는 C#의 안전하지 않은 코드와 포인터에 대한 경험이 없기 때문에 다음 질문에 대한 전문가의 의견이 필요합니다. 를 사용하는 것의 결점은 무..

programing 2022.06.28

gcc 옵션 -fomit-frame-pointer를 이해하려고 합니다.

gcc 옵션 -fomit-frame-pointer를 이해하려고 합니다. 나는 구글에게 그 의미를 알려달라고 부탁했다.gcc선택-fomit-frame-pointer다음 문장으로 리다이렉트 됩니다. - 프레임 프레임 표시 프레임 포인터는 필요 없는 기능을 위해 레지스터에 보관하지 마십시오.이렇게 하면 프레임 포인터를 저장, 설정 및 복원하라는 명령이 필요하지 않습니다. 또한 많은 기능에서 추가 레지스터를 사용할 수 있습니다.또, 일부의 머신에서는 디버깅을 할 수 없게 됩니다. 각 기능에 대해 알고 있는 바와 같이 프로세스 메모리의 스택에 활성화 레코드가 생성되어 모든 로컬 변수와 추가 정보가 유지됩니다.이 프레임 포인터가 함수의 활성화 레코드의 주소를 의미하기를 바랍니다. 이 경우 프레임 포인터를 레지스터에..

programing 2022.06.27

memset에 bzero를 사용하는 이유는 무엇입니까?

memset에 bzero를 사용하는 이유는 무엇입니까? 이번 학기에 들었던 시스템 프로그래밍 수업에서는 C에 기본 클라이언트/서버를 구현해야 했습니다.구조물을 초기화할 때, 예를 들어sock_addr_in또는 char buffers(클라이언트와 서버 간에 데이터를 주고받을 때 사용)는 교수님이 사용만 하라고 지시하셨습니다.bzero가 아니라memset초기화할 수 있습니다.그는 그 이유를 설명하지 않았고, 나는 이것에 대한 타당한 이유가 있는지 궁금합니다. 여기 http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown에서 확인하실 수 있습니다.bzero메모리가 제로화되기 때문에 더 효율적입니다.따라서 추가 체크가 필요 없습니다.memset그럴 수도 있어요..

programing 2022.06.27

정확히 어떻게 이중 문자열 트릭이 작동할까요?

정확히 어떻게 이중 문자열 트릭이 작동할까요? 적어도 일부 C 프리프로세서에서는 매크로를 문자열화하는 다른 함수 매크로에 전달함으로써 매크로의 이름이 아닌 값을 문자열화할 수 있습니다. #define STR1(x) #x #define STR2(x) STR1(x) #define THE_ANSWER 42 #define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */ 사용 사례의 예는 다음과 같습니다. 적어도 GCC와 Clang에서는 동작합니다(양쪽 모두-std=c99C표준으로 어떻게 동작하는지는 잘 모르겠습니다. 이 동작은 C99에 의해 보증됩니까? 그렇다면 C99는 어떻게 보증합니까? 그렇지 않은 경우 동작은 어느 시점에서 C-defined에서 GCC-defined로 이행합니까..

programing 2022.06.27

컴파일 시 -pthread 플래그의 중요성

컴파일 시 -pthread 플래그의 중요성 다양한 멀티 스레드 C 및 C++ 프로젝트에서 본 적이 있습니다.-pthread컴파일 단계와 링크 단계 모두에 적용되는 플래그(다른 사람들은 전혀 사용하지 않고 그냥 통과)-lpthread연결 단계로 이동합니다. 컴파일 및 링크되지 않은 위험이 있습니까?-pthreadflag - 즉, 기능-pthread실제로?주로 Linux 플랫폼에 관심이 있습니다.시험: gcc -dumpspecs | grep pthread 그리고 어떤 것이든 찾아봐%{pthread:. 내 컴퓨터에서는, 이것에 의해서 파일이 컴파일 됩니다.-D_REENTRANT및 에 링크되어 있습니다.-lpthread다른 플랫폼에서는 이는 다를 수 있습니다.사용하다-pthread최고의 휴대성을 실현합니다. 사..

programing 2022.06.27

Create Process:해당 파일 또는 디렉터리가 없습니다.

Create Process:해당 파일 또는 디렉터리가 없습니다. 인스톨 디렉토리외에서 GCC 를 실행하려고 하면, 이 에러가 발생합니다(E:\MinGW\bin). 그래서 제가 지금E:\code라고 하는 파일을 가지고 있습니다.one.c실행 중:gcc one.c -o one.exe다음 오류가 나타납니다. gcc: CreateProcess: No such file or directory 유일한 회피책은 설치 디렉토리로 이동하여 여기서 gcc를 실행하고 다른 모든 경로를 지정하는 것입니다.나의 환경 변수Path포함하다E:\MinGW\bin. 이 문제를 해결할 방법이 있나요?Windows XP SP3를 실행하고 있습니다.C++ 컴파일러를 설치하지 않아 비슷한 문제가 발생하였습니다.내 경우 Python 확장자용 ..

programing 2022.06.26

표준 C++/C++11, 14, 17/C를 사용하여 파일이 존재하는지 확인하는 가장 빠른 방법?

표준 C++/C++11, 14, 17/C를 사용하여 파일이 존재하는지 확인하는 가장 빠른 방법? 표준 C++11, 14, 17 또는 C에 파일이 있는지 가장 빨리 확인하고 싶습니다.수천 개의 파일이 있는데, 그 파일을 처리하기 전에 모든 파일이 존재하는지 확인해야 합니다. 제가 뭘 쓸 수 요?/* SOMETHING */음음음음음음? inline bool exist(const std::string& name) { /* SOMETHING */ } 저는 각각의 방법을 100,000번씩 실행하는 테스트 프로그램을 만들었습니다. 절반은 존재하는 파일이고 절반은 존재하지 않는 파일입니다. #include #include #include #include inline bool exists_test0 (const std..

programing 2022.06.26

C의 함수 포인터는 어떻게 작동합니까?

C의 함수 포인터는 어떻게 작동합니까? 최근에 C에서 함수 포인터를 사용한 경험이 있습니다. 그래서 여러분 자신의 질문에 답하는 전통에 따라, 저는 그 주제에 대한 빠른 조사가 필요한 분들을 위해 아주 기본적인 사항들을 간단히 요약하기로 했습니다.C의 함수 포인터 우선, 다음과 같은 기본적인 기능부터 설명하겠습니다. int addInt(int n, int m) { return n+m; } 2 아, 2 아, 2 아, 2 아, 라고 하다를 int 및 됩니다.int: int (*functionPtr)(int,int); 이제 기능을 안전하게 가리킬 수 있습니다. functionPtr = &addInt; 이제 함수에 대한 포인터를 얻었으므로 이를 사용해 보겠습니다. int sum = (*functionPtr)(2..

programing 2022.06.25
반응형