有一个线程喜欢这个:
{
......
while (1)
{
recv(socket, buffer, sizeof(buffer), 0);
......
}
close(socket);
}
Run Code Online (Sandbox Code Playgroud)
因为线程在recv()调用时阻塞,我怎么能让线程正常退出?
我正在读" 了解你是一个很好的Haskell!,并遇到以下字词:
例如,length函数具有length :: [a] - > Int的类型声明,而不是具有更通用的类型(Num b)=> length :: [a] - > b.
怎么理解" (Num b) => length :: [a] -> b"这里?不应该是" length :: (Num b) => [a] -> b"吗?
说实话,我一直困惑docker exec -it …,docker exec -i …和docker exec -t …,所以我决定做一个测试:
docker exec -it …:
# docker exec -it 115c89122e72 bash
root@115c89122e72:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Run Code Online (Sandbox Code Playgroud)
它正常工作.
docker exec -i …:
# docker exec -i 115c89122e72 bash
^C
Run Code Online (Sandbox Code Playgroud)
命令挂起,我必须使用Ctl+ c来中断它.
docker exec -t …:
# docker exec -t 115c89122e72 bash
root@115c89122e72:/# ls
^C …Run Code Online (Sandbox Code Playgroud)我不是一个挑剔者,而是来自陈述和表达:
我们实际上已经使用过语句和表达式.语句是执行某些操作但不返回值的指令.表达式评估结果值.我们来看一些例子.
......
表达式不包括结尾分号.如果在表达式的末尾添加分号,则将其转换为语句,然后不返回值.在您接下来探索函数返回值和表达式时,请记住这一点.
那么return 5;,它是一个陈述还是表达?如果是声明,则声明不应返回值; 如果是表达式,则表达式不应具有结尾分号.
我知道用的
gcc -dM -E - < /dev/null
Run Code Online (Sandbox Code Playgroud)
可以得到预定的宏gcc,但是什么呢
- < /dev/null
Run Code Online (Sandbox Code Playgroud)
这个命令意味着什么?根据我的理解,背后应该有一个选项-.我试图搜索gcc手册,但找不到答案.
我已docker 1.6.1从此站点下载并安装静态链接,并在以下位置运行RHEL 7.1:
[root@localhost bin]# ./docker -d
WARN[0000] Udev sync is not supported. This will lead to unexpected behavior, data loss and errors
INFO[0000] +job init_networkdriver()
INFO[0000] +job serveapi(unix:///var/run/docker.sock)
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
INFO[0000] -job init_networkdriver() = OK (0)
INFO[0000] Loading containers: start.
INFO[0000] Loading containers: done.
INFO[0000] docker daemon: 1.6.1 97cd073; execdriver: native-0.2; graphdriver: devicemapper
INFO[0000] +job acceptconnections()
INFO[0000] -job acceptconnections() = OK (0)
INFO[0000] Daemon has completed …Run Code Online (Sandbox Code Playgroud) 我写了一个简单的程序来比较Rust和C的性能.
Rust版本:
use std::time::Instant;
const STREAM_ARRAY_SIZE: usize = 10000000;
static mut A: [f64; STREAM_ARRAY_SIZE] = [1.0; STREAM_ARRAY_SIZE];
fn main() {
let now = Instant::now();
unsafe {
for i in 0..STREAM_ARRAY_SIZE {
A[i] = 2.0E0 * A[i];
}
}
let duration = now.elapsed();
println!("{}", (duration.as_secs() * 1_000_000_000 + duration.subsec_nanos() as u64) / 1000);
}
Run Code Online (Sandbox Code Playgroud)
在调试和发布模式下运行它:
$ ./target/debug/calc
472046 us.
$ ./target/release/calc
62860 us.
Run Code Online (Sandbox Code Playgroud)
与调试相比,发布版本具有显着的性能提升.
C版本做同样的事情并在同一台服务器上运行:
#include <sys/time.h>
#include <stdio.h>
#define STREAM_ARRAY_SIZE 10000000
static double A[STREAM_ARRAY_SIZE];
int mysecond(void)
{
struct timeval tp; …Run Code Online (Sandbox Code Playgroud) 当我使用gdb调试程序时,我想查看有关调试进度的文件描述符信息。我使用“info file”、“info proc”命令,但这些命令输出不包含文件描述符信息。那么使用 gdb\xef\xbc\x9f 时是否有命令输出文件描述符信息 先谢谢了!
\n据我所知,我可以定义一个函数类型:
typedef void (fn)(void);
Run Code Online (Sandbox Code Playgroud)
我还可以定义一个函数指针类型:
typedef void (*pfn)(void);
Run Code Online (Sandbox Code Playgroud)
有2个功能.第一个函数的参数类型是一个函数,另一个是函数指针:
void a(fn fn1)
{
fn1();
}
void b(pfn fn1)
{
fn1();
}
Run Code Online (Sandbox Code Playgroud)
我实现了一个函数回调:
void callback(void)
{
printf("hello\n");
}
Run Code Online (Sandbox Code Playgroud)
并将其作为参数传递给a和b:
int main(void) {
a(callback);
b(callback);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
a和b都运行良好,并打印"hello".
所以我想知道定义函数类型和函数指针类型有什么区别?或者实际上,它们是一样的?
我发现C++提供了类型的默认operator<<函数enum:
#include <iostream>
using namespace std;
enum OpType {
Select,
Insert
};
int main() {
OpType t = Select;
cout << t;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
运行结果是:
0
Run Code Online (Sandbox Code Playgroud)
虽然不提供默认operator>>功能:
#include <iostream>
using namespace std;
enum OpType {
Select,
Insert
};
int main() {
OpType t = Select;
cin >> t;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
构建它将生成以下编译错误:
prog.cpp: In function ‘int main()’:
prog.cpp:11:6: error: no match for ‘operator>>’ (operand types are ‘std::istream {aka std::basic_istream<char>}’ and ‘OpType’)
cin >> …Run Code Online (Sandbox Code Playgroud)