小编Med*_*ine的帖子

什么是C++ std :: unordered_map中使用的默认哈希函数?

我在用

unordered_map<string, int>
Run Code Online (Sandbox Code Playgroud)

unordered_map<int, int>
Run Code Online (Sandbox Code Playgroud)

在每种情况下使用什么散列函数以及在每种情况下碰撞的可能性是多少?我将分别在每种情况下插入唯一字符串和唯一int作为键.

我很想知道在字符串和int键及其碰撞统计数据的情况下哈希函数的算法.

c++ hash stl unordered-map c++11

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

Linux - 线程和进程调度优先级

如果我们在linux上使用默认调度策略创建pthreads(pthread_create)或进程(fork),调度程序是否会在调度它们时处理具有相同优先级的进程和线程?

让我们说有一个线程的进程P1和两个线程T1 T2的进程P2

假设只有一个核心......调度将是P1 T1 P1 T2 P1 T1 P1 T2

要么

P1 T1 T2 P1 T1 T2

linux scheduling pthreads process

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

如何检测线程或进程是否因操作系统调度而变得饥饿

这是在Linux操作系统上.App是用C++用ACE库编写的.

我怀疑这个过程中的一个线程有时会被异常长时间(5到40秒)阻塞.该应用程序大多数时间运行良好,除了每天有几次这个问题.还有其他类似的5个应用程序在盒子上运行,由于大量的套接字传入数据,它们也受I/O限制.

我想知道是否有任何我可以以编程方式做的事情,看看线程/进程是否正在获得他们的时间片.

c++ linux operating-system ace job-scheduling

9
推荐指数
1
解决办法
2612
查看次数

如何使这个功能线程安全快速?

int f(int);
Run Code Online (Sandbox Code Playgroud)

多个线程可以调用此函数.该函数应该返回

argument * argument_used_in_first_call_to_function
Run Code Online (Sandbox Code Playgroud)

我的编码如下.尽管它是线程安全的,但它并不快,因为它使用互斥锁定/解锁.在保持线程安全的同时是否有更快的解决方案?

mutex mut1;
int f(int x)
{
  pthread_mutex_lock(mut1);
  static bool first_init = true;
  static int first_arg = 0;

  if (first_init)
  {
    first_arg = x;
    first_init = false;
  }
  pthread_mutex_unlock(mut1);
  return x * first_arg;
}
Run Code Online (Sandbox Code Playgroud)

c c++ performance static multithreading

9
推荐指数
2
解决办法
2337
查看次数

Linux:如何检测进程是否过度颠簸?

有没有办法以编程方式检测?

另外,检测哪些进程正在颠簸的linux命令是什么?

linux process virtual-memory

6
推荐指数
1
解决办法
5977
查看次数

如果事先知道最大大小,c ++ unordered_map有一种为元素预分配内存的方法

看起来像reserve/rehash函数只预先分配桶的数量,而不是要插入的元素(key,vlaue)对的内存.

有没有办法我们可以预先为元素分配内存,所以低延迟的应用程序不需要浪费时间在动态内存分配上.

c++ memory-management stl unordered-map hashtable

6
推荐指数
1
解决办法
1599
查看次数

使用初始化列表时的c ++数据成员初始化顺序

class A
{
private:
int a; 
int b; 
int c;

public:
A() : b(2), a(1), c (3)
{
}
};
Run Code Online (Sandbox Code Playgroud)

根据C++标准,数据成员是按照声明的顺序构造和初始化的,对吗?

但是当使用初始化列表时,我们正在改变数据成员的顺序,现在它们是按照初始化列表的顺序还是声明的顺序初始化?

c++ constructor initializer-list

4
推荐指数
1
解决办法
2562
查看次数

实现双端优先级队列的最佳方法是什么?

我想实现一个具有以下约束的双端优先级队列:

  • 需要在固定大小的数组中实现..比如说100个元素..如果在数组满后需要添加新元素,则需要删除最旧的元素

  • 需要 O(1) 内的最大值和最小值

  • 如果可能的话插入 O(1)

  • 如果可能的话,删除 O(1) 中的最小值

  • 如果可能的话,在 O(1) 内清除为空/初始化状态

  • 当前数组中元素数量的计数,时间复杂度为 O(1)

我希望以上 5 个操作的复杂度为 O(1),但在同一个实现中不可能对所有这些操作都使用 O(1)。3 个操作至少为 O(1),其他 2 个操作为 O(log(n)) 就足够了。

如果可以提供任何指向此类实现的指针,我们将不胜感激。

algorithm big-o priority-queue heapsort data-structures

4
推荐指数
1
解决办法
6293
查看次数

堆树 - 输出排序列表的复杂性

存在未排序的数字列表,并且由它们构造堆树.

从已构建的堆树输出已排序的数字列表的时间复杂度是多少?

(注意:不需要从树中删除节点以获取当前的最小值/最大值,寻找遍历堆树并输出已排序的数字列表的有效方法)

algorithm heapsort data-structures

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

如何在读取完成之前远程服务器关闭套接字时如何处理C中的套接字读取?

读取调用上的客户端块等待读取n个字节.

服务器写入n个字节并立即关闭连接.

如果在读取完成之前套接字关闭或由于某些其他问题,在这种情况下可以读取调用返回负数或零吗?(在这种情况下,客户端/服务器在同一个Linux机器上运行)

我正面临这样的情况但不确定这在TCP/IP子系统中是如何工作的以及如何解决它.

Sever:
write
close

Client:
read
close
Run Code Online (Sandbox Code Playgroud)

c sockets network-programming tcp client-server

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