原有的程式是利用一台pc機的共享記憶體來實現兩個程式間的通訊的,最近要求改了,要設計2臺pc間這兩個的程式的通訊,想把通訊部分的程式做成類封裝起來。其中,由於要有多執行緒的部分。就是說,可能在乙個執行緒裡讀,在另乙個執行緒裡寫。所以得用到類成員函式的函式指標部分。
為了驗證可行性,編寫了下面的程式:
class mythread
public:
static int num;
static void * threadtorun(void *)
printf("num is %d/n",num);
return null;
};//;不要忘了分號
int mythread::num = 0;
int main(void)
mythread obj_thread;
pthread_t thread;
pthread_create(&thread,null,obj_thread.threadtorun,null);
...// 其他部分 沒有也行
pthread_join(thread,null);
return 0;
以上是驗證程式。
另外,我還做個驗證程式,跟上面的問題沒有關係,是關於read,write的阻塞和執行緒的關係。read,write的阻塞會使當前的程序掛起,直到可以繼續讀或者寫為止。但是如果這個程序裡有開了別的執行緒,read,write的阻塞的阻塞會不會將同乙個程序下的其他執行緒也阻塞掉呢? 我做了個簡單的驗證試驗,在上面的mythread類的threadtorun函式中讀出資料,在main函式中(注釋的其他部分,沒有也行的那部分)加入寫入資料。每次向pipe內寫入10240個資料,每次在得到使用者輸入後唯讀1024個。這樣就一定會在主函式中發生阻塞。
如果,讀寫阻塞會將同乙個程序內的所以執行緒一起阻塞,那麼程式就無法正常執行下去(因為讀的部分也被掛起了)。而事實正好相反,這就說明,讀寫阻塞並不會把同一程序下的其他執行緒都阻塞。
類成員函式指標的用法
最近在寫關於控制項的東西,所以用到一些事件響應方面的處理。以前的用法都是函式指標的形式 如下 typedef void funcbtclick void pvalue 把pvalue 當做當前類的指標傳遞歸乙個類外面的函式,而在類外面寫函式,對於封裝來講就感覺很唐突,也很難管理。簡單研究了一些文章,...
函式指標的用法 C
typedef函式指標的用法 c 簡化,促進跨平台開發的目的.typedef 行為有點像 define 巨集,用其實際型別替代同義字。不同點 typedef 在編譯時被解釋,因此讓編譯器來應付超越預處理器能力的文字替換。用法一 typedef int myfun int,int 這種用法一般用在給函...
C 函式指標的用法
c語言函式指標的定義形式 返回型別 函式指標名稱 引數型別,引數型別,引數型別,c 函式指標的定義形式 返回型別 類名稱 函式成員名稱 引數型別,引數型別,引數型別,c語言函式指標使用舉例 include include int fun1 printf this is fun1 call n ret...