pthreads

mysqld 线程数超过 max_connections
pthreads

mysqld 线程数超过 max_connections

正如问题标题所示:我已经max_connections = 2在我的my.cnf文件中进行了设置,但是当我激活我的 mysql 守护进程时,线程计数为 37。我正在网上搜索,但找不到迹象表明我的期望是错误的。我max_connections正确理解该指令吗?任何人都可以提出为什么这可能不会限制线程数的原因吗? 尝试解决方案 我通过 mysql CLI 客户端查询 mysql 全局变量: | Variable_name | Value | +----------------------------+-...

Admin

我可以防止 pthread 被调度程序中断吗?
pthreads

我可以防止 pthread 被调度程序中断吗?

我正在使用 4 核 ARM CPU 编写嵌入式实时 Linux 设备。要求在 10 kHz 下进行周期性计算,该计算不应抖动太多且决不应丢失。我的 POSIX 线程可以在繁忙循环中读取硬件提供的 10 kHz 切换寄存器,并在该位切换时执行计算。 为了防止SCHED_RR调度程序中断 pthread,我专门为此线程设置了与核心 2 的 CPU 关联性,并将优先级设置为 99(最大)。少数其他线程将 CPU 亲和力设置为除 2 之外的核心且优先级为 50。但是仍有一个 systemd 正在运行,并且还有许多其他进程。 这足以防止线程被调度程序中断吗?如果没有,...

Admin

有没有办法阻止后代线程自动进入其祖先线程的cgroup?
pthreads

有没有办法阻止后代线程自动进入其祖先线程的cgroup?

我将应用程序的一些线程显式地写入由我创建的 Linux cpucgroup(例如,让我们现在讨论 v1,但如果您知道 v2 的方法,那就太好了)。 但是,我看到后代线程(pthread_create()由其父线程调用创建,显式写入 cgroup 或在其父线程之后再次写入)也出现在 cgroup 中,而无需我直接编写它们。 这会对应用程序产生不好的影响。某些线程意外到达 cgroup。您需要始终注意这一警告并小心,例如线程池等。 请问您有办法解决这个问题吗?例如,也许有一种方法可以禁止后代线程自动进入其父级的 cgroup?任何帮助表示赞赏。 ...

Admin

malloc() 分配的内存区域是什么?
pthreads

malloc() 分配的内存区域是什么?

我正在使用库编写一个多线程 C 程序pthread。程序malloc()从线程和主线程调用。当我检查返回的内存地址时malloc(),主线程中返回的地址malloc()是通常的地址(如0x80874a0),这是程序的堆部分的地址。但是malloc()另一个线程(由 创建)返回的地址pthread_create()有点不寻常,地址位于地址空间的高位(0x7ffa87000a60 看起来有点像堆栈部分中的地址)。分析该线程的某个堆栈变量的地址后,看起来返回的地址位于malloc()该线程的堆栈附近。 我很困惑,因为据我所知堆程序的一部分由该程序中的所有线程共享,...

Admin

收集统计数据
pthreads

收集统计数据

我编写了一个简单的程序,其中有一个在 CPU 核心上运行的线程。它旋转得有点激进,并且占用了 100% 的 CPU 核心。我可以用top+看到这一点1。 N分钟后,我希望能够知道: 内核抢占(中断)我正在运行的线程多少次? ...

Admin

Linux 中信号是如何“传递”的?
pthreads

Linux 中信号是如何“传递”的?

我对用于描述 Linux 信号传递的术语感到困惑。大多数文本都会说“信号被传递到进程”或“信号被传递到线程”。 据我了解,当内核调用该处理程序时,信号被“传递”到驻留在进程中的信号处理程序。该进程本身是异步运行的,这个“交付”过程类似于 CPU 调用中断处理程序。中断处理程序(信号处理程序)不是进程线程,也不是该进程下运行的任何线程,对吗?它是由内核启动的一个单独的线程。 因此,信号不会传递给线程或进程,而是传递给驻留在进程中的信号处理程序,并且不一定与任何特定线程关联。如果这不正确,请告诉我,例如,信号处理程序和 pthread 之间的关联,它证明了“信号...

Admin

简单扫描在启动时几乎立即崩溃
pthreads

简单扫描在启动时几乎立即崩溃

我在 Debian 上使用simple-scan,现在总是崩溃。几个月前效果还不错。我怀疑有什么东西升级了(我正在运行bullseye)并且破坏了东西。 的输出simple-scan说: simple-scan: thread-watch.c:165: avahi_threaded_poll_quit: Assertion `pthread_equal(pthread_self(), p->thread_id)' failed. Abort 我尝试运行ldd /usr/bin/simple-scan以确保与所有库关联的所有包都是最新的,包括libc6...

Admin

链接器找不到 libpthread
pthreads

链接器找不到 libpthread

我正在尝试构建两个程序的 32 位版本,并且都显示相同的错误消息 /usr/bin/ld: cannot find /media/34GB/Arquivos-de-Programas-Linux/Glibc-2.17-32bit/lib/libpthread.so.0 我当然明白为什么它找不到它,因为我将 Glibc 目录从上面的路径移动到: /media/34GB/Arquivos-de-Programas-Linux-32bit/Glibc-2.17/lib/libpthread.so.0 但是,我不知道为什么 ld 会在这个错误的路径中寻找 lib...

Admin

Xlib:GUI数字时钟的最佳实现是什么?
pthreads

Xlib:GUI数字时钟的最佳实现是什么?

我正在制作一个包含数字时钟的 X 应用程序。时钟以“hh:mm”的格式显示当前时间。我想掌握Xlib,所以我只想使用Xlib(没有其他工具包)。 时钟必须每分钟刷新一次。为了刷新时钟,我想出了三种实现方式,但我无法判断哪一种是最好的。请告诉我哪个最好。并且,如果还有其他更好的实现,请告诉我。 第一个实现从事件循环内部刷新时钟。第二个和第三个实现从事件循环外部刷新时钟。 第一个实现如下:在事件循环中,我使用 XEventsQueued 或 XPending 来了解剩余事件的数量。如果仍然没有事件,请检查当前时间,如果自上次刷新以来已经过了 1 分钟或更长时间,...

Admin

存在哪些安全控制措施可以使用户进程无法为自己分配最高优先级?
pthreads

存在哪些安全控制措施可以使用户进程无法为自己分配最高优先级?

我正在学习 Linux 进程调度程序,并且一直在阅读 pthread_setsched 函数:https://man7.org/linux/man-pages/man3/pthread_setschedparam.3.html 让我惊讶的一件事是线程可以修改自己的优先级/类别。我可以看到这对于配置某些多线程应用程序(例如生产者和消费者)是如何有意义的,但是,任何进程都可以只请求设置自己的优先级,这似乎存在系统稳定性风险。是什么阻止我的 helloworld.out 以最高优先级请求 SCHED_FIFO?这可能会完全锁定系统。 那么有什么机制可以防止进程完全...

Admin

Linux上是否可以通过调用clock_gettime来获取任意线程的CPU时间?
pthreads

Linux上是否可以通过调用clock_gettime来获取任意线程的CPU时间?

如果我知道系统上运行的任意线程的 TID,我可以轻松计算其 pthread cpu 时钟 ID。但是我可以clock_gettime从我的程序中调用并获取它的 CPU 时间吗?我的实验表明这是不可能的,但我无法找到来源来证实这一点。 如果没有,有没有办法获得给定线程的高分辨率 CPU 时间?/proc/stat提供了该信息,但我想要比 jiffies 更准确的信息。 ...

Admin

pthread 的堆栈大小不受限制
pthreads

pthread 的堆栈大小不受限制

我的默认堆栈大小(根据 ulimit -s)是 8192 kB,因此当我尝试运行下面的代码时,它自然会出现段错误。另外,自然地,如果我执行“ulimit -s 9000”,它就可以正常工作。但是,当我执行“ulimit -s unlimited”时,代码再次出现段错误。有什么想法吗? 如果它有用,我正在运行内核为 4.19.0-6 的 Debian 10 和 gcc 版本为 Debian 8.3.0-6。 #include <iostream> #include <unistd.h> #include <cstdlib> ...

Admin

pthread_mutex()执行时进程状态是什么
pthreads

pthread_mutex()执行时进程状态是什么

以下是 Linux 进程状态; R: running or runnable, it is just waiting for the CPU to process it S: Interruptible sleep, waiting for an event to complete, such as input from the terminal D: Uninterruptible sleep, processes that cannot be killed or interrupted with a signal, usually to make the...

Admin

将队列中的作业调度到多个线程上
pthreads

将队列中的作业调度到多个线程上

我有一个函数必须处理一组目录中的所有文件(5-300 个文件之间的任何文件)。要使用的并行线程数由用户指定(通常为 4)。这个想法是在 4 个独立的线程中启动该函数。当一个线程返回时,我必须开始处理下一个(第 5 个)文件,依此类推,直到所有文件完成。 在 Windows 上,WaitForMultipleObjects()withbWaitAll=False在这里帮助我。我有一个可以填充的结构,并将其填充到数组中 map<UINT, string>::iterator iter = m_FileList.begin(); string outp...

Admin

POSIX线程的调度策略与线程实际执行时内核的完全公平调度程序
pthreads

POSIX线程的调度策略与线程实际执行时内核的完全公平调度程序

我对设置线程的策略以及在执行该策略时如何遵循该策略有一些疑问。 Pthread 允许设置线程的调度策略SCHED_FIFO/SCHED_RR/SCHED_OTHER。我试图了解这个用户设置策略是如何工作的,因为 Linux 内核用作CFS默认调度程序策略。用户设置策略CFS在执行时会被覆盖吗?如果是这样,pthread调度策略有什么用? ...

Admin