问题标签 [linuxthreads]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 用于多线程的 C 信号(替代?)
我正在通过 TCP socket 一个一个地发送一组浮点数。我的服务器(接收器 - 同时处理多个请求)程序应该读取数据,直到接收到值 0。如果客户端(发送器)在连接后 10 秒内(或在最后一个发送值之后)没有发送任何东西,我想要服务器关闭该连接。我发现了这种信号方法,但我认为在线程中使用它不是最佳选择,但更可能是 fork() 因为它迫使我使用全局变量。我必须将“socket”参数发送给函数,这样我就可以关闭它并且AFAIK这是不可能的。
每次客户端连接或发送某些东西时,我称之为:
我还有哪些其他选项必须数 10 秒才能重新启动此计时器?
linux - LinuxThreads/NPTL:将常量值 0 分配给 pthread_t 类型的变量是否可靠(忽略 POSIX 合规性)
我正在使用 POSIX 线程审查代码,并使用 POSIX 线程的较旧 LinuxThreads 实现在 Linux 平台上运行(交叉编译代码,如果有任何区别,则以 MIPS/uClibc 为目标)。如果 NPTL 实施的答案有任何不同,为了完整起见,我也想知道这一点。这个问题pthread_t
与我可以从 C 库头文件中看到的类型有关,它被定义为unsigned long int
uClibc 和 glibc (实际上是嵌入式 GNU C 库——我只有 Ubuntu 可供参考)。
对于这个问题......类型的变量pthread_t
用于存储属性的所有者。困扰我的是,我看到0
了标记没有线程拥有该属性的分配;这让我很困扰,因为我知道 POSIX 标准规定pthread_t
类型是不透明的,我们不应该对类型做出任何假设。我知道最好使用布尔标志来确定属性是否由线程拥有。我确实认为应该修复代码以从长远来看尊重 POSIX 标准(如果不是出于其他原因,那么是为了让后代免于思考代码的稳健性),但现在短期内我需要知道回答以下问题:我们可以假设永远不能设置的pthread_t
值0
pthread_create(3)
在这个平台中(据我所知,我们应该得到一个值的唯一方法pthread_t
),然后:赋值给 value是一种标记这个平台中0
未使用的属性的可靠方法吗?
perforce - 我收到“致命客户端错误;正在断开连接”
尝试连接到 perforce 客户端时遇到此错误
Fatal client error; disconnecting! write: ...: No space left on device
我曾尝试查看此“...”文件夹的内容,但没有太多内容。
linux - 用户登录时是否可以在 Linux 中导出原始文本密码?
我只是想知道,是否可以使用echo "$password" >> /home/user/Desktop/file name
. 我知道密码是针对shadow file
by验证的pam_unix.so
。在转换原始文本之前可以导出用户名和密码吗?
linux - 服务一定数量的请求后杀死旧服务器线程/进程并启动新线程/进程的原因是什么
例如,apache httpd 提供了一个指令 MaxConnectionsPerChild,它控制服务器通过杀死旧进程并启动新进程来回收进程的频率。
服务一定数量的连接后完全杀死旧线程的原因是什么。
这不会使 CPU 缓存不必要地变冷吗?
c - 区分 pthread 调用的线程
提供的框架正在调用我的函数PartialCodec
。
我不允许更改框架代码。但是,在里面PartialCodec
我想为不同的线程分配不同的任务,所以我需要区分每个线程。我怎样才能做到这一点?
c - pthread信号量在linux上什么也不显示
我是 linux 线程信号量的新手。
没有错误,没有警告,结果输出。
发生这种情况的原因是什么?
我怀疑信号量被阻塞或无限循环。
任何人都可以在某些地方看到逻辑不正确吗?
初始化 sem 值:bin_sem = 0,pile_sem = 0,fuel_sem = 0
multithreading - libgomp:线程创建失败:禁用/启用 CPU 后参数无效
我有一台 2 插槽机器,每台机器都有 14 个内核并启用了超线程 - 因此总共 14*2*2 = 56 个处理单元或逻辑 CPU。
我通过执行以下操作禁用了所有奇数编号的 CPU(1、3、5、7、...、53、55):
现在,每当我尝试使用 OpenMP 创建多个线程(=28)时,都会出现以下错误:
我通过执行以下操作将其还原:
不过,我遇到了同样的错误。
有什么想法吗?
编辑:在我进行上述实验之前,代码对于任意数量的线程都可以正常工作。
c - Posix 线程 ID 是否与 linux 线程 ID 具有一对一的关系?
我知道 和之间的区别。生成一个 POSIX 线程 ID,它由通常定义为. 我们可以用来获取生成的线程的ID。pthread_self()
syscall(SYS_gettid)
pthread_create()
unsigned long int
pthread_self
pthread_create
有了strace
,我知道pthread_create()
在libpthread.so.0中是通过调用clone
系统调用来实现的,这也是用于的系统调用fork()
。通过调用创建POSIX线程后pthread_create()
,会产生一个新的POSXI线程(由返回的线程ID标识pthread_self()
)和一个新的linux线程(由返回的线程ID标识syscall(SYS_gettid)
)。这是否意味着 POSIX 线程 ID 与 linux 线程 ID 具有一对一的关系?pthread_t
它们只是分别用和代表线程pid_t
?
实际上,有时我发现一个linux线程ID映射到同一个进程中的多个POSIX线程ID,这意味着通过调用产生一对POSIX线程ID和linux线程ID后pthread_create()
,POSIX线程ID发生变化,而linux线程ID保持不变相同的。有没有办法在保持 linux 线程 ID 不变的同时更改 POSIX 线程 ID?如果有,它pthread
是什么功能?
谢谢你。
这里是通过拦截fork
和pthread_create
调用的日志。ltid
表示linux线程ID,tid
表示POSIX线程ID,pid
表示进程ID。
我的解释:
- (pid=12832, ltid=12832, tid=140...976) 调用
fork
产生 (pid=12848, ltid=12848, tid=140...976) - (pid=12848, ltid=12848, tid=140...296) 调用
fork
产生 (pid=12849, ltid=12849, tid=140...296) - (pid=12848, ltid=12848, tid=139...656) 调用
pthread_create
产生 (ltid=12865, tid=139...496)
的调用者2
是1
根据linux线程ID(12848)的结果,但是它们有不同的POSIX线程ID。1
和也是如此5
。
这是拦截代码片段。
linux - 删除日志文件中特定日期之前的行
我有一个 ffmpeg 进程日志文件,其中每天都会附加日志数据。我想通过查看日志并删除属于某个日期的行来自动维护此日志。我尝试了一些东西,但没有帮助。
我该怎么做?请帮忙。谢谢。
例子。删除 6 月 1 日之前的所有行。
包含 6 月之前的数据的 process.log 文件示例我想删除所有以前的数据。
这是我要保留的数据,属于当前月份的数据: