我正在尝试定义一些像这样的可变参数模板:
typedef const char CCTYPE[];
template<CCTYPE X, CCTYPE... P> struct StringConcat { ... };
Run Code Online (Sandbox Code Playgroud)
所以我可以这样写:
char foo[] = "foo"; char bar[] = "bar";
std::cout << StringConcat<foo, bar>;
Run Code Online (Sandbox Code Playgroud)
它打印出来了foobar.如果C++ 0x中有可能,我怎么能这样做呢?
我真正感兴趣的是使用c ++模板解决FizzBuzz问题,我在这里找到了一个解决方案,使用模板将int转换为char [].
有一个守护进程有两个线程:th1,th2.th2使用读取套接字read(2).
如果我杀死守护进程SIGTERM,th1捕获并处理信号(设置终止标志),之后调用守护进程析构函数,它会调用pthread_kill(th2, SIGTERM).但是,第二个线程没有收到SIGTERM,所以它不会被杀死(当套接字接收数据并从中获取时read(),它完成执行,因为已经设置了终止标志).
如果我打电话pthread_kill(th2, SIGUSR2),然后pthread_kill(th2, SIGTERM),一切都正确完成.因此,UNIX似乎不允许发送相同的信号.
这种行为是否依赖于操作系统?我们可以确保指定的线程SIGTERM从另一个线程接收吗?