while(1
)else
if(tinputevent.ival == input_val_up)
else
if(tinputevent.ival == input_val_exit)
}}
這樣的做的明顯缺陷是:
select機制:
參考:unix環境高階程式設計 i/o多路轉接
監測多個檔案,只要有某乙個檔案可讀/可寫/異常或超時,即返回
int
select
(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,
struct timeval *timeout)
;
nfds:最大檔案控制代碼+1
readfds:監視這些檔案描述符的讀變化,即在這個集合中是否有我們關心的檔案描述符可讀了。
writefds:被監測是否可寫的檔案,同上。
exceptfds:被監測是否有異常的檔案,同上。
timeout:超時時間。當寫為0的時候表示查詢:不管有沒有變化都返回。當寫為null的時候表示:無論等多長時間,知道我關心的這些集合中有檔案描述符發生了期望的變化。
返回值:當有檔案描述符發生了期望的變化,返回變化的數量。
為什麼select可以降低cpu的佔用率?因為select的監測是休眠監測。
程式修改
static
inttsdevinit
(void
)else
/*環境鍊錶中,tslib_tsdevice未註冊*/if(
!g_pttsdev)if(
ts_config
(g_pttsdev))if
(getdispresolution
(&g_ixres,
&g_iyres)
)/*獲取顯示屏的解析度*/
/*解析度由fbdeviceinit函式從底層獲取,因此觸控螢幕需要在fb(lcd)初始化之後再初始化*/
g_ttsdevinptopr.ifd=
ts_fd
(g_pttsdev)
;/*獲取控制代碼*/
return0;
}
typedef
struct inputopr t_inputopr,
*pt_inputopr;
int
allinputdevicesinit
(void
)else
return-1
;}return0;
}
事件處理函式:
int
getinputevent
(pt_inputeventopr ptinputevent)
/*事件處理,或者叫事件查詢*/
pttemp = pttemp->ptnext;
/*沒有發生該事件隨即查詢鍊錶中另乙個事件*/}}
return-1
;}
資料庫採用select方式拼接insert
方法 select insert into zq department values depart id depart name depart fullname company id depart admin depart type depart security created depart pa...
ActionBar的使用方式 Selector
我覺得重點不在actionbar上面了,寫完actionbar之後應該就是selector和shape attr這些xml檔案了。實現actionbar的格式 menu main.xml要寫成這樣,其實就是新增多個item,並對這些item的text和圖示包括大小進行設定。預設的已經有乙個item,...
LU 分解,採用行連續劃分方式下的 MPI 實現
include stdio.h include stdlib.h include mpi.h define a x,y a x m y a為m m矩陣 define a x,y a x m y define l x,y l x m y define u x,y u x m y define floa...