2008年3月11日 星期二

今天上課

之前上網路程式設計老師有說: multi thread programming 很困難
今天上課又提到一次,multi thread 我還沒有真正寫過
在linux 下用fork產生一個新的process而不用thread
process跟 thread最大差別就在 process有自己的address space, thread沒有
雖說fork但也沒有完全copy一份memory
有一些機制例如: copy on write之類的再需要動到資料時再copy
process則利用一些IPC的機制如pipe或是shared memory溝通

今天另外一個主題是Exception handling Java在這邊處理的還不錯
code 看起來更清楚了
在C常要用
#define ERRORA -1
#define ERRORB -2
code = foo();
if( code == ERROE )
{
... 做一些例外處理
}
code = bar();
if( coid == ERROEB)
{
.., 做例外處理
}

Java 則是

try
{
foo();
bar();
} catch( ERRORA) {
... 例外處理
} catch(ERRORB) {
... 例外處理
} finally {
... 只要有catch exception都會執行, 用來free一些資源
}

寫Thread最重要的就是資料要分開 分清楚!
小心不要Double Lock

沒有留言: