有兩種方法可以讓不可重用的函數(shù)變成可重用的函數(shù)。第一種方法就是改變接口,用指針或引用代替原先使用靜態(tài)數(shù)據(jù)的地方。比方說,POSIX定義了 strok_r,std::strtok中的一個(gè)可重入的變量,它用一個(gè)額外的char**參數(shù)來代替靜態(tài)數(shù)據(jù)。這種方法很簡單,而且提供了可能的最佳效果。但是這樣必須改變公共接口,也就意味著必須改代碼。另一種方法不用改變公有接口,而是用本地存儲(chǔ)線程(thread local storage)來代替靜態(tài)數(shù)據(jù)(有時(shí)也被成為特殊線程存儲(chǔ),thread-specific storage)。