Linux 为每个进程提供了三个定时器:
- ITIMER_REAL: 给一个指定的时间间隔,按照实际的时间来计数,发出SIGALRM信号;
- ITIMER_VIRTUAL: 当进程执行的时候才计数,发出SIGVTALRM信号;
- ITIMER_PROF: 当进程执行或者是系统为进程调度的时候计数,发出SIGPROF信号。这个和ITIMER_VIRTUAL联合,常用来计算系统内核时间和用户时间。
熟读而精思,循序而渐进,厚积而薄发。
Linux 为每个进程提供了三个定时器:
如果两个或多个进程永久等待某个事件而该事件只能由这些等待进程的某一个引起,那么死锁就会发生。死锁的发生需要满足四个必要条件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<iostream> using namespace std; class demo { public: demo(){} private: const int m_matrix[10][10]; }; int main() { return 0; } |
error C2439: ‘demo::m_matrix’ : member could not be initialized
这可咋办啊?class里面,普通数组可以有,可const数组就真的不能有吗?
多线程程序的各线程通常会共享某些资源,比如代码、文件、数据等,这些被共享的资源通常会成为临界资源。各线程访问临界资源的代码区段称作临界区,临界区代码的执行应该是互斥的,否则可能造成错误的行为。解决临界区问题的算法必须满足三个条件:
下面的这段代码简易地实现了两个线程互斥地访问临界资源(std::string Critical),可以证明,其满足上述三个条件。
1 2 3 4 5 6 7 | #include <iostream> using namespace std; int main() <% cout<<"hello,world"<<endl; return 0; %> |
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈!
给你n个整数,用这n个拼成一个超长的整数,要令这个新的整数最小
多组测试数据,每组第一行为n(1<=n<=1000),接下来是n个正整数,使用空格或者换行分开;
每个数字的长度不会超过1000,不存在前导0;
当n为0时结束程序.
对于每组输入,输出拼成的新的整数的结果
列举一些ReadLine的键绑定,凡是使用Readline控件的程序中都可以使用这些快捷键,比如bash、lftp、gdb等。首先,做一下约定:
POJ 1028:http://acm.pku.edu.cn/JudgeOnline/problem?id=1028
模拟浏览器前进、后退、访问到某个页面的过程。又是一道水题,我什么时候才能做到水王之王的位置?
ZOJ上的一道题(illusive chase)让我憋了一整天才AC了,而且用了224行,最后优化到115行!我真真是没救了,也只能做做小儿科的题目了!sucks……这里有上次百度之星的一道水题……
一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5 15=4+5+6 15=7+8
由于归并排序需要O(n)的额外空间,在普通函数中,我实在想不出好的办法来申请这块内存。于是只好把他写成一个模板类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | template <class T> class Merger { public: Merger(T* array, size_t n):extra(new T[n/2]) //~ 归并需要O(n)的额外空间 { sub_Merger(array, n); //~ 调用递归子函数 } ~Merger() { delete [] extra; //~ 释放内存 } private: T* extra; Merger(); void sub_Merger(T* array, size_t n); }; |
如果你有什么好的建议的话,敬请赐教,不胜感激涕零!:)