반응형

C 17

동시성:C/C++로 작성된 파이썬 확장자는 글로벌 인터프리터 잠금의 영향을 받습니까?

동시성:C/C++로 작성된 파이썬 확장자는 글로벌 인터프리터 잠금의 영향을 받습니까? Python의 가장 큰 장점 중 하나는 코드의 프로세서 집약적인 부분의 속도를 높이기 위해 C와 C++ 확장자를 쉽게 쓸 수 있다는 것입니다.이러한 확장 기능은 글로벌 인터프리터 잠금 기능을 피할 수 있는 것일까요, 아니면 GIL의 제한도 받을 수 있을까요? 그렇지 않다면, 이러한 "확장 용이성"은 이전에 생각했던 것보다 훨씬 더 치명적인 기능입니다.저는 단순한 예/아니오가 답이 아니라고 생각하지만 확신할 수 없어서 스택 오버플로우에 대한 질문을 드립니다.예, 확장(Python에서 호출된 C 루틴)에 대한 호출은 여전히 GIL의 대상입니다. 그러나 Python VM에 제어권을 반환하기 전에 다시 할당하도록 주의해야 하는..

programing 2023.09.11

C에서 "==" 연산자의 반환 값

C에서 "==" 연산자의 반환 값 C에서 두 값이 동일하거나 다른 "참" 값으로 평가할 수 있는 경우 "==" 연산자가 항상 1로 평가한다고 가정해도 됩니까? struct ss { int id; }; struct os { int sid; int state; }; int count(struct ss *s, int state) { int num = 0; // foreach o (of type os*) in a hash table num += o->state == state && (s ? o->sid == s->id : 1); return num; } 그렇게o->sid == s->id항상 1 또는 0을 반환할 것인가 아니면 다른 값을 반환할 수 있습니까? C에서 두 값이 동일하거나 다른 "참" 값으로 평가할 ..

programing 2023.09.11

C에 스왑 기능이 내장되어 있습니까?

C에 스왑 기능이 내장되어 있습니까? C에 세 번째 변수를 사용하지 않고 작동하는 내장 스왑 기능이 있습니까?아니요. C++ 내장 스왑 기능:swap(first,second); 확인하기: http://www.cplusplus.com/reference/algorithm/swap/ 세 번째 변수를 사용하지 않고 두 변수 값을 스왑할 수 있습니다. a=a^b; b=a^b; a=b^a; 다음 항목도 확인할 수 있습니다. https://stackoverflow.com/questions/756750/swap-the-values-of-two-variables-without-using-third-variable 세 번째 변수 없이 스왑하는 방법?세 번째 변수를 사용하지 않으려는 이유는 무엇입니까?대부분의 아키텍처에서 ..

programing 2023.09.06

64비트 요소를 통해 루프를 벡터화하는 것이 대용량 버퍼에 비해 성능이 향상되지 않는 이유는 무엇입니까?

64비트 요소를 통해 루프를 벡터화하는 것이 대용량 버퍼에 비해 성능이 향상되지 않는 이유는 무엇입니까? 벡터라이제이션이 프로그램의 성능에 미치는 영향을 조사하고 있습니다.이와 관련하여 다음과 같은 코드를 작성하였습니다. #include #include #include #define LEN 10000000 int main(){ struct timeval stTime, endTime; double* a = (double*)malloc(LEN*sizeof(*a)); double* b = (double*)malloc(LEN*sizeof(*b)); double* c = (double*)malloc(LEN*sizeof(*c)); int k; for(k = 0; k < LEN; k++){ a[k] = rand();..

programing 2023.09.06

스위치 대/소문자 구분 기호를 사용하는 경우 'break' 문

스위치 대/소문자 구분 기호를 사용하는 경우 'break' 문 C/Objective-C/C++의 모든 스위치 케이스 문에 곱슬곱슬한 중괄호를 사용합니다. 나는 몇 분 전까지 그것을 포함할지 고려하지 않았습니다.break;교정기 안의 진술이 좋거나 나쁜 관행이었습니다.나는 그것이 중요하지 않다고 의심하지만, 나는 여전히 물어볼 가치가 있다고 생각합니다. switch (foo) { case 1: { // stuff break; } default: { break; } } 대 switch (foo) { case 1: { // stuff } break; default: { // stuff } break; } 짧은 대답: 중요하지 않습니다. 조금만 더 자세한 답변을 드리자면... 공식적인 C99 사양은 브레이크 문..

programing 2023.06.13

C에서 모듈 시스템 생성(동적 로딩)

C에서 모듈 시스템 생성(동적 로딩) 런타임에 컴파일된 C 코드를 로드한 다음 그 안에서 함수를 호출하려면 어떻게 해야 합니까?단순히 exec()을 부르는 것과는 다릅니다. EDIT: 모듈을 로드하는 프로그램이 C에 있습니다.dlopen이 가는 길입니다.다음은 몇 가지 예입니다. dlopen으로 플러그인 로드: #include ... int main (const int argc, const char *argv[]) { char *plugin_name; char file_name[80]; void *plugin; ... plugin = dlopen(file_name, RTLD_NOW); if (!plugin) { fatal("Cannot load %s: %s", plugin_name, dlerror ())..

programing 2023.06.08

부호 없는 정수 오버플로를 검출하려면 어떻게 해야 합니까?

부호 없는 정수 오버플로를 검출하려면 어떻게 해야 합니까? a = c의 모든b 솔루션을 찾기 위해 C++로 프로그램을 작성하고 있었습니다.여기서 a, b, c는 모두 0-9의 숫자를 정확히 한 번 사용합니다.이 프로그램은 a와 b의 값을 루프하여 a, b 및b a에서 매번 디짓 카운트 루틴을 실행하여 디짓 조건이 충족되었는지 확인합니다. 단, 가 정수 제한을 오버플로하면b 스플리어스 솔루션이 생성될 수 있습니다.결국 다음과 같은 코드를 사용하여 확인하게 되었습니다. unsigned long b, c, c_test; ... c_test=c*b; // Possible overflow if (c_test/b != c) {/* There has been an overflow*/} else c=c_test; //..

programing 2023.04.19
반응형