/* * m.cpp * * Created on: 2015年1月23日 * Author: maygolf */ #include <pthread.h> #include <iostream> #include <time.h> #include <sys/time.h> #include <unistd.h> using namespace std; int i = 0; pthread_mutex_t mutex ;//= PTHREAD_MUTEX_INITIALIZER; long long current_time() { struct timeval t_start; //get start time gettimeofday(&t_start, 0); long long t = ((long long) t_start.tv_sec) * 1000 + (long long) t_start.tv_usec / 1000; return t; } void* doSomeThing(void* cookie) { while (1) { if (pthread_mutex_lock(&mutex) == 0) { cout << "name:" << pthread_self() << " time:" << current_time() << " i:" << i << endl; i++; pthread_mutex_unlock(&mutex); } // cout << "name:" << pthread_self() << " time:" << current_time() << " sleep" << endl; // sleep(1); } return (void*) 1; } int main(int argc, char **argv) { pthread_mutex_init(&mutex,NULL); pthread_t thread, thread1,thread2; cout << "name:" << pthread_self() << " time:" << current_time() << endl; pthread_create(&thread, NULL, doSomeThing, &thread); pthread_create(&thread1, NULL, doSomeThing, &thread1); pthread_create(&thread1, NULL, doSomeThing, &thread2); // cout << "name:" << pthread_self() << " time:" << current_time() << endl; // int i = 0; // for (i = 0; i < 10; i++) // { // sleep(1); // // } // cout << pthread_cancel(thread) << endl; pthread_join(thread, NULL); pthread_join(thread1, NULL); pthread_join(thread2, NULL); }
相关推荐
Linux下的pthread线程库是实现多线程编程的关键工具,遵循POSIX标准,提供了一整套接口用于创建、管理线程以及同步线程间的操作。本文将深入探讨pthread线程库,包括线程的创建与结束、线程绑定、线程状态、线程...
5. **pthread_cond_wait()** 和 **pthread_cond_signal()**:条件变量的等待和信号操作,用于实现更复杂的线程同步策略。 #### pthread的高级特性 - **线程优先级与调度策略**:可以通过设置线程属性来调整线程的...
在pthread线程库中,"锁的技巧"是一个重要的概念。锁是用来控制多个线程对共享资源访问的一种机制,以避免数据竞争和不一致性的发生。主要的锁类型包括: 1. 互斥锁(Mutex):互斥锁确保任何时候只有一个线程能...
**Pthread线程包在Windows平台的移植与应用** Pthread,全称为POSIX线程,是UNIX系统标准的一部分,提供了跨平台的多线程编程接口。它在Linux和其他符合POSIX标准的操作系统中广泛使用,允许开发者创建并管理多个...
以使用pthread提供的接口,如`pthread_create()`用于创建新线程,`pthread_join()`等待线程结束,`pthread_mutex_t`和`pthread_mutex_lock()`/`unlock()`进行线程间同步,以及`pthread_cond_t`和条件变量相关函数。...
总结来说,C++封装`pthread`线程涉及的关键点包括线程创建、线程函数、线程同步和线程管理。通过理解这些概念并结合实际应用,开发者可以在Linux环境中有效地利用多线程技术提高程序的并发性能。在实际项目中,还...
《Pthread多线程编程指南》是一本专为开发者准备的深入解析Pthread线程库的手册,尤其适合那些在UNIX、Linux等操作系统环境中进行多线程编程的工程师。Pthread,全称POSIX线程(Portable Operating System Interface...
在本例“Jni多线程同步事例”中,我们将探讨如何在JNI层面上实现多线程同步,特别是在一个生产者-消费者模型的场景下。 生产者-消费者模型是一种经典的并发问题,它涉及到两个或多个线程之间的协作。在该模型中,...
2. **线程同步**:在多线程环境中,数据一致性是个关键问题。`pthread_join()`函数用于等待特定线程的完成,确保线程间的正确顺序。另外,互斥锁(`pthread_mutex_t`)可用于保护共享资源,防止数据竞争。 3. **...
3. `pthread_cond_t` 和 `pthread_cond_wait()`: 条件变量是线程间同步的一种机制。`pthread_cond_t`定义了一个条件变量,而`pthread_cond_wait()`函数则让当前线程等待条件变量的满足。当其他线程改变了条件,可以...
"临界区"和"多线程同步"是解决这一问题的关键概念。临界区是一种同步机制,它允许一次只有一个线程访问特定的代码区域或资源,以避免并发访问时可能产生的数据竞争和不一致性。多线程同步则是为了协调多个线程的执行...
线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 举例1: 银行存款 5000。柜台,折:取3000;提款机,卡:取 3000。剩余:2000 举例2...
本文将深入探讨如何使用JNI实现多线程同步,并通过源码来解析这一过程。 1. **JNI基础知识** JNI为Java程序员提供了一种方式,可以在Java代码中调用本地方法,反之亦然。它定义了一系列的函数,例如`FindClass`...
信号量(Semaphore)在Pthread中通过`semaphore.h`头文件进行操作,主要用于线程间的同步。`sem_init`用于初始化信号量,`sem_wait`会使信号量减一并可能阻塞线程,`sem_post`则使信号量加一,释放资源。`sem_...
6. **线程同步与通信**:Pthread还提供了各种同步机制,如互斥锁(`pthread_mutex_t`)、条件变量(`pthread_cond_t`)、信号量(`sem_t`)等,用于控制线程间的执行顺序和数据共享安全。 7. **资源释放**:当线程...
实验内容集中在Linux下的多线程同步机制上,具体通过修改生产者-消费者问题的示例程序来实现。在这个问题中,多个生产者线程生成数据,而消费者线程负责消费这些数据。为了保证数据的一致性和正确性,需要防止多个...
操作系统实验三:线程同步是计算机科学中一个关键的主题,特别是在多处理器和多核心系统中,线程同步对于保证程序的正确性和效率至关重要。在这个实验中,我们将深入探讨线程同步的基本概念、方法以及在Linux操作...
pthread 条件变量,线程同步
在Linux操作系统中,多进程和多线程是两种并发执行的方式,它们在处理并发问题时,经常需要进行同步和互斥操作,以确保数据的一致性和程序的正确性。本篇将详细介绍这两种并发模型以及如何在Linux环境中实现同步互斥...