스레드 메서드 (System.Threading)를 재귀 적으로 호출하는 것은 나쁜 습관입니까?

마이크 마크스

내 용어를 용서하십시오. 나는에 익숙하지 System.Threading않지만 아래와 같은 것이 있다면 :

private static int _index;
private static List<int> _movieIds = new List<int>();

static void Main(string[] args)
{
    // the below call populates the _movieIds list variable with around 130,000 ints
    GetListOfMovieIdsFromDatabase(); 

    _index = 0;
    Thread myThread = new Thread(DoWork);
    myThread.Start();
}

public static void DoWork()
{
     // do something with the value of _index (iterate through the _movieIds list) then recursively call DoWork() again

     Thread.Sleep(400);

     _index++;

     DoWork();
}

이것은 나쁜 습관입니까? int's클래스 수준에서 멤버로 정의 된 비공개 정적 목록을 반복하고 있으므로의 첫 번째 반복 DoWork()_index(간단 함을 위해 설명하지 않은 방식으로) 첫 번째 값을 사용 하고 두 번째 반복 ( 재귀 호출)은 두 번째 값과 함께 작동 _index합니다.

내가 이것을 묻는 이유는이 앱을 실행 한 지 약 12 ​​시간 후에 스택 오버플로 예외가 발생하고 재귀 호출 때문이라고 생각하기 때문입니다.

AndyG

예. 호출 스택이 언 롤링 할 기회가 없기 때문에 결국 항상 스택 오버플로가 발생합니다.

index재귀 호출을 통해 변수를 증가시키는 대신 스레드에서 루프를 사용하십시오.

public static void DoWork()
{
     while(true)
     {    
          // do something with the value of _index (iterate through the _movieIds list) then recursively call DoWork() again

         Thread.Sleep(400);

         _index++;

         // break when a condition is met   
      }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

메서드 / 함수 호출 내에서 개체를 인수로 인스턴스화하는 것은 나쁜 습관입니까?

분류에서Dev

run 메소드를 직접 호출하는 것이 나쁜 습관입니까?

분류에서Dev

쉘 프로그램에서 system ()을 호출하는 것은 나쁜 습관입니까?

분류에서Dev

C #을 선언하는 클래스 내에서 추상 메서드를 호출하는 것은 나쁜 습관입니까?

분류에서Dev

클래스 메서드가`this`를 반환하는 것은 나쁜 습관입니까?

분류에서Dev

추상 클래스의 정적 메서드를 노출하는 것은 좋은 또는 나쁜 관행으로 간주

분류에서Dev

github에서 백엔드를 노출하는 것이 나쁜 습관입니까?

분류에서Dev

정적 최종 필드에 스레드 로컬 값을 저장하는 것이 나쁜 습관입니까?

분류에서Dev

약속을 반환하지 않는 비동기 메서드를 기다리는 것이 명시 적으로 나쁜 습관으로 간주됩니까?

분류에서Dev

C ++의 클래스에서 함수 메서드를 재귀 적으로 호출하는 방법은 무엇입니까?

분류에서Dev

타입 스크립트에서 재귀 적으로 메서드를 호출하는 방법

분류에서Dev

빌드 메소드에서 변수를 선언하는 것이 나쁜 습관입니까?

분류에서Dev

확장 메서드를 정적 메서드로 호출-좋은 스타일입니까, 나쁜 스타일입니까?

분류에서Dev

자바에서 런타임 예외를 함수 호출을 통한 슈퍼 "중단"으로 사용하는 것은 나쁜 습관입니까?

분류에서Dev

Python에서 비공개 메서드와 함수를 사용하지 않는 것이 나쁜 습관입니까?

분류에서Dev

스레드를 참조하여 전달하는 것이 나쁜 습관입니까?

분류에서Dev

자바 스크립트에서 재정의 변수를 사용하는 것이 나쁜 습관입니까?

분류에서Dev

"if"조건에서 사용될 변수에 메소드를 저장하는 것이 나쁜 습관입니까?

분류에서Dev

init 메소드에서 스레드를 시작하는 것이 나쁜 생각입니까?

분류에서Dev

미로에서 그리드를 재귀 적으로 나누는 방법은 무엇입니까?

분류에서Dev

컨트롤러에서 각도로 즉석에서 양식을 만드는 것은 나쁜 습관입니까?

분류에서Dev

JS에서 요소를 만드는 동안 이벤트 리스너를 인라인으로 추가하는 것이 나쁜 습관입니까?

분류에서Dev

$ scope를 서비스에 전달하는 것이 나쁜 습관입니까?

분류에서Dev

이미지를 더 작은 크기로 만드는 것이 나쁜 프로그래밍 관행입니까?

분류에서Dev

이벤트 핸들러를 동적으로 설정 / 변경하는 것은 나쁜 습관입니까?

분류에서Dev

Robotframework 키워드와 페이지 개체를 결합하는 것이 좋은 / 나쁜 습관입니까?

분류에서Dev

하나의 컨트롤러에서 두 개의 다른 테이블에 대한 레코드를 만드는 것이 나쁜 습관으로 간주됩니까?

분류에서Dev

같은 이름의 setter / getter 쌍을 사용 (오버로드)하는 것이 나쁜 습관입니까? [C ++]

분류에서Dev

thymeleaf 템플릿에 서비스를 전달하는 것은 나쁜 습관입니까?

Related 관련 기사

  1. 1

    메서드 / 함수 호출 내에서 개체를 인수로 인스턴스화하는 것은 나쁜 습관입니까?

  2. 2

    run 메소드를 직접 호출하는 것이 나쁜 습관입니까?

  3. 3

    쉘 프로그램에서 system ()을 호출하는 것은 나쁜 습관입니까?

  4. 4

    C #을 선언하는 클래스 내에서 추상 메서드를 호출하는 것은 나쁜 습관입니까?

  5. 5

    클래스 메서드가`this`를 반환하는 것은 나쁜 습관입니까?

  6. 6

    추상 클래스의 정적 메서드를 노출하는 것은 좋은 또는 나쁜 관행으로 간주

  7. 7

    github에서 백엔드를 노출하는 것이 나쁜 습관입니까?

  8. 8

    정적 최종 필드에 스레드 로컬 값을 저장하는 것이 나쁜 습관입니까?

  9. 9

    약속을 반환하지 않는 비동기 메서드를 기다리는 것이 명시 적으로 나쁜 습관으로 간주됩니까?

  10. 10

    C ++의 클래스에서 함수 메서드를 재귀 적으로 호출하는 방법은 무엇입니까?

  11. 11

    타입 스크립트에서 재귀 적으로 메서드를 호출하는 방법

  12. 12

    빌드 메소드에서 변수를 선언하는 것이 나쁜 습관입니까?

  13. 13

    확장 메서드를 정적 메서드로 호출-좋은 스타일입니까, 나쁜 스타일입니까?

  14. 14

    자바에서 런타임 예외를 함수 호출을 통한 슈퍼 "중단"으로 사용하는 것은 나쁜 습관입니까?

  15. 15

    Python에서 비공개 메서드와 함수를 사용하지 않는 것이 나쁜 습관입니까?

  16. 16

    스레드를 참조하여 전달하는 것이 나쁜 습관입니까?

  17. 17

    자바 스크립트에서 재정의 변수를 사용하는 것이 나쁜 습관입니까?

  18. 18

    "if"조건에서 사용될 변수에 메소드를 저장하는 것이 나쁜 습관입니까?

  19. 19

    init 메소드에서 스레드를 시작하는 것이 나쁜 생각입니까?

  20. 20

    미로에서 그리드를 재귀 적으로 나누는 방법은 무엇입니까?

  21. 21

    컨트롤러에서 각도로 즉석에서 양식을 만드는 것은 나쁜 습관입니까?

  22. 22

    JS에서 요소를 만드는 동안 이벤트 리스너를 인라인으로 추가하는 것이 나쁜 습관입니까?

  23. 23

    $ scope를 서비스에 전달하는 것이 나쁜 습관입니까?

  24. 24

    이미지를 더 작은 크기로 만드는 것이 나쁜 프로그래밍 관행입니까?

  25. 25

    이벤트 핸들러를 동적으로 설정 / 변경하는 것은 나쁜 습관입니까?

  26. 26

    Robotframework 키워드와 페이지 개체를 결합하는 것이 좋은 / 나쁜 습관입니까?

  27. 27

    하나의 컨트롤러에서 두 개의 다른 테이블에 대한 레코드를 만드는 것이 나쁜 습관으로 간주됩니까?

  28. 28

    같은 이름의 setter / getter 쌍을 사용 (오버로드)하는 것이 나쁜 습관입니까? [C ++]

  29. 29

    thymeleaf 템플릿에 서비스를 전달하는 것은 나쁜 습관입니까?

뜨겁다태그

보관