2012-01-08 5 views
1

스레드 컨텍스트를 강제로 전환하는 방법이 궁금합니다. 수면? 추천 된 방법? 몇 가지 테스트를해야합니다. 특히 ++ 작업에서 컨텍스트 전환을 강제 수행 할 수 있습니까?어쨌든 특히 ++ 같은 일부 작업에서 스레드 컨텍스트 전환을 강제로 수행합니까?

+0

a++; 

를 교체 시도 할 수 있습니다? 사양에 따르면 컨텍스트 스위칭은 동작에 문제가 없어야합니다 (과도한 스위칭이있을 경우에만 성능) – Bohemian

+0

@ 보헤미안 : 내 생각에 OP는 코드가 실패하는 방식을 보여주기 위해 경쟁 조건을 시뮬레이션하려고합니다. 실패하지 않습니다. – Gabe

+0

@ 보헤미안 : 동기화 상태가 좋지 않은 멀티 스레드 앱에서 문맥 전환이 가장 확실하게 동작에 영향을 줄 수 있습니다. 100 개의 스레드가 i = f (i) 인 것으로 생각하십시오. 여기서 f (i) = i입니다. 스레드 인터리빙 방식에 따라 1-100의 범위를 가질 수 있습니다. – James

답변

2

당신은 당신이 뭘 하려는지 주위에 좀 더 컨텍스트를 줄 수

int tmp = a; 
Thread.sleep(1); 
a = tmp + 1; 
1

Thread.yield()는 스위치가 발생할 것을 반드시 보장하지 않습니다 (실제로, 적어도 그 때 실행 대기중인 것이 없으면 아무 것도 없습니다). Thread.sleep()은 거의 그것을 거의 보장 할 것이지만, + + 연산에서 일어날 수있는 방법이 없다. 왜냐하면 기본 구현을 오버라이드 할 방법이 없기 때문이다. 실제로 어떤 일이 일어나려고합니까? 스위치가 충분하기 전이나 후에 스위치가 켜지겠습니까? 좋아하는 IDE를 사용하여 "시계"를 설정하여 수행하려는 작업을 에뮬레이션 할 수 있습니까?

관련 문제