小编PHc*_*Der的帖子

Java:如何获取ConcurrentHashMap的静态快照?

Java doc说,方法值()和entrySet()的返回值由映射支持.因此,对地图的更改将反映在集合中,反之亦然.我不希望这发生在我的静态副本上.从本质上讲,我希望在我的DS上完成大量并发操作.但在某些情况下,我想迭代其静态快照.我想迭代静态快照,因为我假设与正在同时更新的版本相比,迭代静态快照会更快.

java concurrenthashmap java.util.concurrent

8
推荐指数
2
解决办法
1439
查看次数

将select()用于非阻塞套接字

我正在尝试使用select函数在服务器和1个客户端(不再)之间进行非阻塞i/o,其中通信流畅(可以随时发送而另一个将在不等待发送的情况下接收).我找到了一些包含一些代码的教程,并尝试将其改编为我的.这就是我所拥有的 -

服务器

#define PORT "4950"
#define STDIN 0

struct sockaddr name;

void set_nonblock(int socket) {
    int flags;
    flags = fcntl(socket,F_GETFL,0);
    assert(flags != -1);
    fcntl(socket, F_SETFL, flags | O_NONBLOCK);
}


// get sockaddr, IPv4 or IPv6:
void *get_in_addr(struct sockaddr *sa) {
    if (sa->sa_family == AF_INET)
        return &(((struct sockaddr_in*)sa)->sin_addr);

    return &(((struct sockaddr_in6*)sa)->sin6_addr);
}

int main(int agrc, char** argv) {
    int status, sock, adrlen, new_sd;

    struct addrinfo hints;
    struct addrinfo *servinfo;  //will point to the results

    //store the connecting address and size …
Run Code Online (Sandbox Code Playgroud)

c sockets select bsd

6
推荐指数
2
解决办法
5万
查看次数

Java:确保线程永远不会进行上下文切换

比如说 20 核机器上大约有 150 个线程。我希望特定线程永远不会进行上下文切换。我不确定将线程优先级设置为 MAX_PRIORITY 是否会执行此操作?另外,如果我们将优先级设置为 max,操作系统是否有必要遵循指令(假设我在 sudo 模式下运行)?

java linux multithreading operating-system

5
推荐指数
2
解决办法
276
查看次数

C ++:有效但未指定状态。这是什么意思?

我一直在试图了解std :: move。这个文档很好地描述了它。但是它在示例部分中说:“ .....当bar失去其值,现在处于有效但未指定的状态.....”。许多其他文档也在相同的上下文中使用此术语。另外,我在与之相关的stackoverflow上找到了很多答案。是完全相同的问题。但是它没有谈论“未指定的含义是什么?”。

所以我的问题是?

有效但未指定的含义是什么?

它对指针变量(ClassA* ptr)有什么影响?

对变量所指向的对象有什么影响?

谢谢。

c++ move

5
推荐指数
0
解决办法
322
查看次数

Java NIO套接字,可以在任何可用的端口连接吗?

链接提供了打开非阻塞套接字的教程.但是,此处提供的方法不提供拾取任何随机端口的选项.此java文档页面中显示的所有构造函数都将地址作为参数.有什么办法吗?

java sockets nonblocking

3
推荐指数
1
解决办法
814
查看次数

从另一个类调用一个扩展Thread的类的方法

我知道这是一个有点天真的问题,但我想了解java中多线程背后的基本工作原理.考虑以下代码,并说A在主线程中执行,它开始执行另一个工作线程,在B类中定义.我想知道可以从A调用B.func1并运行B的方法,并行执行或不执行?

public class A {
    public static void main(String[] args) {
        B obj = new B();
        obj.start();
        obj.func1();
    }
}

public class B extends Thread {
    public B() {
        //constructor
    }
    public void run() {
        while(true) {
            //do somethings
        }
    }
    public void func1() {
        //do someotherthings
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading

2
推荐指数
1
解决办法
2219
查看次数