`
ouyangfeng521
  • 浏览: 248644 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

pthread 线程同步

 
阅读更多
/*
 * 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线程库介绍

    Linux下的pthread线程库是实现多线程编程的关键工具,遵循POSIX标准,提供了一整套接口用于创建、管理线程以及同步线程间的操作。本文将深入探讨pthread线程库,包括线程的创建与结束、线程绑定、线程状态、线程...

    pthread 线程标准 (中)

    5. **pthread_cond_wait()** 和 **pthread_cond_signal()**:条件变量的等待和信号操作,用于实现更复杂的线程同步策略。 #### pthread的高级特性 - **线程优先级与调度策略**:可以通过设置线程属性来调整线程的...

    pthread线程库源代码

    在pthread线程库中,"锁的技巧"是一个重要的概念。锁是用来控制多个线程对共享资源访问的一种机制,以避免数据竞争和不一致性的发生。主要的锁类型包括: 1. 互斥锁(Mutex):互斥锁确保任何时候只有一个线程能...

    Pthread线程包 Windows移植版

    **Pthread线程包在Windows平台的移植与应用** Pthread,全称为POSIX线程,是UNIX系统标准的一部分,提供了跨平台的多线程编程接口。它在Linux和其他符合POSIX标准的操作系统中广泛使用,允许开发者创建并管理多个...

    pthread多线程c++动库下载

    以使用pthread提供的接口,如`pthread_create()`用于创建新线程,`pthread_join()`等待线程结束,`pthread_mutex_t`和`pthread_mutex_lock()`/`unlock()`进行线程间同步,以及`pthread_cond_t`和条件变量相关函数。...

    c++pthread 线程封装

    总结来说,C++封装`pthread`线程涉及的关键点包括线程创建、线程函数、线程同步和线程管理。通过理解这些概念并结合实际应用,开发者可以在Linux环境中有效地利用多线程技术提高程序的并发性能。在实际项目中,还...

    Pthread多线程编程指南

    《Pthread多线程编程指南》是一本专为开发者准备的深入解析Pthread线程库的手册,尤其适合那些在UNIX、Linux等操作系统环境中进行多线程编程的工程师。Pthread,全称POSIX线程(Portable Operating System Interface...

    Jni多线程同步事例

    在本例“Jni多线程同步事例”中,我们将探讨如何在JNI层面上实现多线程同步,特别是在一个生产者-消费者模型的场景下。 生产者-消费者模型是一种经典的并发问题,它涉及到两个或多个线程之间的协作。在该模型中,...

    pthread多线程求pi,linux多线程pthread,C,C++

    2. **线程同步**:在多线程环境中,数据一致性是个关键问题。`pthread_join()`函数用于等待特定线程的完成,确保线程间的正确顺序。另外,互斥锁(`pthread_mutex_t`)可用于保护共享资源,防止数据竞争。 3. **...

    linux pthread 多线程控制示例代码

    3. `pthread_cond_t` 和 `pthread_cond_wait()`: 条件变量是线程间同步的一种机制。`pthread_cond_t`定义了一个条件变量,而`pthread_cond_wait()`函数则让当前线程等待条件变量的满足。当其他线程改变了条件,可以...

    利用临界区的多线程同步测试.rar_临界区_多线程同步_线程 同步_线程同步

    "临界区"和"多线程同步"是解决这一问题的关键概念。临界区是一种同步机制,它允许一次只有一个线程访问特定的代码区域或资源,以避免并发访问时可能产生的数据竞争和不一致性。多线程同步则是为了协调多个线程的执行...

    Linux系统编程之线程同步

    线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 举例1: 银行存款 5000。柜台,折:取3000;提款机,卡:取 3000。剩余:2000 举例2...

    JNI 多线程同步机制的源码实现

    本文将深入探讨如何使用JNI实现多线程同步,并通过源码来解析这一过程。 1. **JNI基础知识** JNI为Java程序员提供了一种方式,可以在Java代码中调用本地方法,反之亦然。它定义了一系列的函数,例如`FindClass`...

    第2章-实验4-Pthread线程-yz1

    信号量(Semaphore)在Pthread中通过`semaphore.h`头文件进行操作,主要用于线程间的同步。`sem_init`用于初始化信号量,`sem_wait`会使信号量减一并可能阻塞线程,`sem_post`则使信号量加一,释放资源。`sem_...

    Pthread创建一个线程

    6. **线程同步与通信**:Pthread还提供了各种同步机制,如互斥锁(`pthread_mutex_t`)、条件变量(`pthread_cond_t`)、信号量(`sem_t`)等,用于控制线程间的执行顺序和数据共享安全。 7. **资源释放**:当线程...

    操作系统实验报告——线程与进程同步

    实验内容集中在Linux下的多线程同步机制上,具体通过修改生产者-消费者问题的示例程序来实现。在这个问题中,多个生产者线程生成数据,而消费者线程负责消费这些数据。为了保证数据的一致性和正确性,需要防止多个...

    重大软院操作系统实验三:线程同步

    操作系统实验三:线程同步是计算机科学中一个关键的主题,特别是在多处理器和多核心系统中,线程同步对于保证程序的正确性和效率至关重要。在这个实验中,我们将深入探讨线程同步的基本概念、方法以及在Linux操作...

    线程同步 条件变量

    pthread 条件变量,线程同步

    linux上实现多进程和多线程实现同步互斥(源代码)

    在Linux操作系统中,多进程和多线程是两种并发执行的方式,它们在处理并发问题时,经常需要进行同步和互斥操作,以确保数据的一致性和程序的正确性。本篇将详细介绍这两种并发模型以及如何在Linux环境中实现同步互斥...

Global site tag (gtag.js) - Google Analytics