线程响应键盘按键的例子
2014-09-05 12:46
288 查看
例子1:键盘输入的字符会排队,一个一个被线程处理。
输出结果:
[root@localhost thread]# ./a.out
p
Keboard: 'p': print
p
p
op
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'p': print
pppppq
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'q': exit
[root@localhost thread]# ./a.out
p
Keboard: 'p': print
^C
例子2:信号和线程一起的例子
输出结果:
[root@localhost thread]# ./a.out
p
Keboard: 'p': print
p
p
Keboard: 'p': print
Keboard: 'p': print
q
Keboard: 'q': exit
#include <iostream> #include <stdio.h> #include <pthread.h> using namespace std; char ch = 0; pthread_t tid; void *thread_func(void *arg) { while(true) { ch=getchar(); sleep(1); } } int main() { //pthread_t tid; if (pthread_create(&tid, NULL, thread_func, NULL) != 0) { cout<<"Create thread error\n"; return -1; } while(1) { if(ch=='p' || ch=='P') { cout<<"Keboard: '"<<ch<<"': print"<<endl; ch=0; continue; }else if(ch=='q' || ch=='Q') { cout<<"Keboard: '"<<ch<<"': exit"<<endl; break; } } return 0; }
输出结果:
[root@localhost thread]# ./a.out
p
Keboard: 'p': print
p
p
op
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'p': print
pppppq
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'p': print
Keboard: 'q': exit
[root@localhost thread]# ./a.out
p
Keboard: 'p': print
^C
例子2:信号和线程一起的例子
#include <iostream> #include <stdio.h> #include <pthread.h> #include <signal.h> using namespace std; char ch = 0; //signal void handle_sigint(int) { printf("[singal]: catched ctrl+c\n"); ch='q'; } //pthread pthread_t tid; void *thread_func(void *arg) { while(true) { ch=getchar(); sleep(1); } } int main() { //signal struct sigaction sig; sig.sa_handler = handle_sigint; sigemptyset(&sig.sa_mask); sig.sa_flags = 0; sigaction(SIGINT, &sig, NULL); //pthread_t if (pthread_create(&tid, NULL, thread_func, NULL) != 0) { cout<<"Create thread error\n"; return -1; } while(1) { if(ch=='p' || ch=='P') { cout<<"Keboard: '"<<ch<<"': print"<<endl; ch=0; continue; }else if(ch=='q' || ch=='Q') { cout<<"Keboard: '"<<ch<<"': exit"<<endl; break; } } return 0; }
输出结果:
[root@localhost thread]# ./a.out
p
Keboard: 'p': print
p
p
Keboard: 'p': print
Keboard: 'p': print
q
Keboard: 'q': exit
相关文章推荐
- MFC单文档实现键盘按键的响应
- 如何在对话框中响应键盘按键
- MFC响应键盘及鼠标按键
- JS 获取和响应键盘按键事件
- window下响应键盘按键
- 如何在对话框中响应键盘按键
- 如何在对话框中响应键盘按键
- cocos2d-x3.0 响应键盘back按键退出游戏
- 转贴:利用VB远线程注入技术实现键盘拦截的例子(无DLL)
- 在VC/MFC中响应键盘按键
- js获取键盘按键响应事件(兼容各浏览器)
- Android 重温--键盘事件--按两次按键返回例子
- Android如何键盘按键响应事
- javascript 响应键盘特定按键(只响应数字键)
- 在VC/MFC中响应键盘按键
- 键盘映射表 vc检测按键的例子
- Android如何键盘按键响应事件
- VC++中单个键盘按键的响应
- 在VC/MFC中响应键盘按键
- 学习:响应键盘按键