세그멘테이션 오류가 나는 이유를 모르겠어요..
글쓴이: 해봐 / 작성시간: 금, 2004/10/22 - 9:41오후
일단, main 을 보면은..
class Test : public Runnable { public: void run() { for(int i = 0 ; i < 10 ; i++) { TRACE1("aaaaaaaaa"); sleep(1); } } }; int main() { Executor* executor = new PooledExecutor(); executor->init(NULL); Test test; executor->execute(&test); // // while(true) // sleep(1000); return 0; }
그리고, PooledExecutor를 보면,,..(실제 pooled는 아직 구현안한상태)
class WorkerThread { private: Runnable* m_prunnable; pthread_t* m_pthread; static void* do_work(void* arg) { } public: WorkerThread(Runnable* runnable) :m_prunnable(runnable) { } void start() { int pthread_create_ret = pthread_create(this->m_pthread, NULL, WorkerThread::do_work, this); printf("%d\n", pthread_create_ret); if(pthread_create_ret != 0) throw pthread_create_ret; } }; void PooledExecutor::init(void* arg) { } void PooledExecutor::close(void* arg) { } void PooledExecutor::execute(Runnable* arg) { WorkerThread worker(arg); worker.start(); }
여기서 thread creation 시 에러가 발생합니다. 왜 그럴까요..
pthread_create의 리턴도 안찍힙니다. 왜 그럴까요..
단, void start() 부분에서 create thread 부분을 없애고 아무 루틴이나 넣으면 잘 돌아가요..
[/code]
Forums:
m_pthread를 초기화하지 않아서 그런 것 같은데요.
m_pthread를 초기화하지 않아서 그런 것 같은데요.
[code:1] pthread_t m_thread;....
헉스.. 완전,,, 질문같지 않은 질문 이었네여..,, 하여튼 감사합니다
헉스.. 완전,,, 질문같지 않은 질문 이었네여..,, 하여튼 감사합니다.
댓글 달기