首页 > TAG信息列表 > Pthreads

windows平台使用 pthreads库

note 近日封装一些跨平台库时, 发现线程的创建需要做平台的区分, windows的线程创建和Linux下的线程操作不一样。很麻烦,还要做平台区分。 能否在windows上使用pthread的线程库操作线程呢? 这样,线程的操作就统一了, 避免了一些不必要的麻烦和过失。 果然,找到了一个开源库: pthrads ,

Pthreads API

大纲 gerneralthread opreation apimutexcondition value 一、 Introduction 1980-90s,存在数种不同的线程接口,1995年POSIX.1 c对POSIX线程API进行标准化,后来被SUSv3接受。 1.1 线程数据类型 数据类型描述pthread_t线程IDpthread_attr_t线程属性pthread_mutex_t互斥变量pthrea

在线程启动时执行pthread“ pre init”功能

我正在使用启动pthread的外部linux库. 有什么方法可以设置一个触发器,该触发器在线程“ main”函数启动之前从线程上下文启动新的pthread时调用提供的函数? (就像安装信号处理程序一样)解决方法:没有标准API可以满足您的要求.总是有复杂而脆弱的替代方案.例如,您可以构建一个过滤器

c-禁用__thread支持

我正在实现一个非常轻量的pthread替换库.为什么要完全禁用__thread有几个原因. >这是浪费内存.如果我要创建一千个与使用__thread声明变量的上下文无关的线程,它们仍将分配程序,但仍将分配该数据字节大小的1000 *,并且从不使用它.它根本不是与大容量并发模型兼容的内存.如果我们需

线程释放资源时

在pthread_detach的手册页中,我读到,当任何线程被分离时,然后在线程终止时,它将其资源释放回系统. 什么是线程资源?是它是该线程使用的内存的一部分,如果是的话,则该内存是进程地址空间的一部分.我试图理解这一点,但我确实做到了. 那么,可连接线程呢,线程何时释放其资源?在pthread_jo

从服务器进程获取实时反馈[在PHP中]

需求: 我需要运行一个后台进程(根据用户请求),该过程大约需要30到60秒才能完成.我想给用户一些状态反馈.注意:Toly是正确的,不需要“背景”. 工作原理: 在此期间,该进程将打印约20条状态消息,我使用proc_open检索它们,并使用fgets在读取管道上进行侦听.我可以将这些消息保存到会话变量

c-共享库和libpthread.so的g问题

我在这个问题上碰壁了,希望在这里能找到一些帮助.我创建了一个小示例可执行文件和共享库来展示该问题. 抱歉,我意识到这变成了文字墙,但是我试图确保包含所有相关信息. 我的设定 System: CentOS release 5.11 (Final) g++: gcc version 4.4.7 20120313 (Red Hat 4.4.7-1) (GCC) l

使用pthread_mutex_lock时遇到问题

我刚开始在大学里学习有关线程的一些知识,似乎我不太了解它. 我想让我的代码获取参数并检查它们是偶数还是质数,如果要输出,请打印它们.另外,将这些数字中的每一个相加. 这是代码: #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define some

具有FPM的PHP7上的异步/线程

我发现pthreads在Web环境中不起作用.我在Linux Debian上的FPM上使用PHP7.1,我也使用Symfony 3.2.我想要做的就是,例如: >用户发出请求并放置文件(1GB) > PHP Server接收文件并对其进行处理.>立即向用户(jsonResponse)返回true,而无需等待处理上传的文件>稍后,在完成文件处理(移动,复

PHP 7中的多线程

如何在PHP7中进行多线程处理?我看到的pthread的第一个问题直接来自PHP手册. https://secure.php.net/manual/en/intro.pthreads.php The pthreads extension cannot be used in a web server environment. Threading in PHP should therefore remain to CLI-based applications on

pthread的运行时不一致

我的多线程C程序运行以下例程: #define NUM_LOOP 500000000 long long sum = 0; void* add_offset(void *n){ int offset = *(int*)n; for(int i = 0; i<NUM_LOOP; i++) sum += offset; pthread_exit(NULL); } 当然,应该通过获取锁来更新总和,但是在此之

GDB下的Linux线程性能非常快,否则极慢

我正在研究在Linux上运行的嵌入式C应用程序.我最近在使用pthread时遇到了一些非常奇怪的性能问题. 我的系统有8个线程来回传递信息,这些信息使用pthread互斥锁进行保护.独立运行我的应用程序时,使用互斥锁时线程性能会非常慢.在500 MHz ARM板上,锁定和解锁互斥锁约200次需要2.4秒,

linux-检查fork()是否安全

如果进程中有多个线程,则fork()的行为是不确定的.如何检查是否只有一个线程(主要在linux上,但也对Windows,darwin感兴趣)?解决方法:在Linux下,fork()的行为在多线程进程中并不是未定义的,但是它所做的事情通常不是很有帮助. 或者更确切地说,如果您使用fork()而不立即调用exec(),则可

linux-非抢先Pthreads?

有没有一种方法可以在不使用调度程序的情况下使用pthread,因此仅当线程显式产生或在互斥锁/ cond上被阻塞时才进行上下文切换?如果不是,是否有一种方法可以最大程度地减少调度开销,从而使强制上下文切换尽可能少地发生? 该问题涉及POSIX线程的Linux gcc / g实现.解决方法:您可以使用

linux-使用-lpthread标志时对`pthread_init’的未定义引用:

我正在使用以下代码进行编译: gcc -o outfile infile.c -lpthread 并且唯一未定义的引用是pthread_init. 根据网上的一些建议,我尝试使用-pthread代替-lpthread. 我包括< pthread.h> 有任何想法吗?解决方法:不要调用pthread_init().在Linux上没有必要.

与Java中的await(x == 0)等效

例如,在Pthreads中,有可能让进程等待某个条件,例如: <await (nr == 0 ^ nw == 0) nw++>; 有没有办法使用Java中的信号量以类似的方式来做到这一点?等待像nr == 0这样的条件.解决方法:如果是一次性事件,则可以使用a CountDownLatch: private final CountDownLatch xIsZeroLatch = ne

静态pthread自旋锁初始化存在吗?

pthread自旋锁是否有静态初始化程序?我看着pthread.h,似乎没有一个. 我正在寻找类似于PTHREAD_MUTEX_INITIALIZER的东西.解决方法:不,唯一定义了静态初始值设定项的POSIX控制结构似乎是互斥体,条件和读写锁定.

pthread_cleanup_push处理程序不适用于SIGINT(Ctrl C)

我有类似的代码: myThread() { pthread_cleanup_push(CleanupHandler , NULL) while (true) { /* some code here */ } pthread_cleanup_pop(NULL) } static void CleanupHandler(void *arg) { printf("Cleaned\n"); } 但是,如果我使用^ C(

c-销毁锁定的互斥锁时pthread_mutex_destroy的正确行为是什么

我写了以下最小示例: #include <iostream> #include <cstring> #include <pthread.h> #define SUCCESS 0 using namespace std; int main() { int res; pthread_mutex_t t; pthread_mutex_init(&t, NULL); res = pthread_mutex_lock(&t);

c-pthread取消成功,但是在几百个线程后无法创建线程

在1013个线程之后,不会创建pthread.我知道每个进程的线程创建都有限制,但是在这里我取消了线程,并且在线程中我还调用了pthread_testcancel()作为取消点.其实这里发生了什么?有人可以帮助我纠正线程创建失败吗?我是多线程技术的新手,如果您向我提供详细说明,那就太好了.谢谢. #inclu

c-pthread_join中的段错误

我有一个相当简单的C代码: #include <pthread.h> #include <stdio.h> #include <stdlib.h> void* run(void *arg) { printf("hello from %d!\n", *(int*)arg); pthread_exit(NULL); } int main() { int ids[4]; pthread_t threads[4]; for (i

c-如何终止正在等待信号量操作的线程

我正在编写一个使用共享内存和ipc信号灯的程序.有一个主服务器进程创建共享内存和信号灯.任何数量的客户端进程都可以连接到共享内存,并在允许时对其进行读写.信号量提供了阻止机制来控制读取和写入.一切正常,除非我尝试终止客户端.用于访问共享内存的信号量块在一个线程中,并且在

c-pthread的计时器中断

如何使用pthreads实现计时器中断?解决方法:我从未在pthread本身中看到过任何此类功能,但是您始终可以只使用SIGALARM处理程序,该处理程序将使用semaphore通知线程. 编辑: #include <iostream> #include <string.h> #include <errno.h> #include <unistd.h> #include <signal.h> #i

对象变量在PHP pthread中丢失上下文

我在PHP中使用pthreads时,发现pthreads在其上下文中丢失了对象变量,这是正常现象还是Bug,或者我做错了什么? class Downloader extends Thread { private $ch; public function __construct($data) { $this->ch = curl_init(); } public function __des

pthread和C

到目前为止,我正在使用C和pthread.我可以访问类成员函数(如果它是静态的),并且我读到如果我通过pthread_create将“ this”作为参数传递给我,那么我可以访问普通的类成员函数,因为c在后台进行了此操作.但是我的问题是我想给该函数一个int,并且我不知道如何使用pthread_create做多个