`
ouyangfeng521
  • 浏览: 242785 次
  • 性别: 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系统编程之线程同步

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

    线程同步 条件变量

    pthread 条件变量,线程同步

    11.Linux线程同步

    文章目录一、线程同步的概念二、互斥锁1、初始化锁2、阻塞加锁3、非阻塞加锁4、解锁5、销毁锁(此时锁必需unlock状态,否则返回EBUSY)三、示例程序四、版权声明 一、线程同步的概念 线程同步?怎么同步?一起运行?...

    cocos2d-x多线程和同步

    cocos2d-x多线程和同步 cocos2d-x v2.2.0

    Linux系统编程-(pthread)线程通信(围栏机制).pdf

    Linux线程里还支持一个围栏机制--也就是屏障功能。这个围栏机制,可以设置等待的线程数量,当指定...在Linux线程里的屏障功能由`pthread_barrier `系列函数实现,在&lt;pthread.h&gt;中定义,功能主要是用于多线程的同步。

    [并发并行]_[线程同步]_[pthread_once 实现单例模式分析]

    http://blog.csdn.net/infoworld/article/details/49798215 mingw 编译,Win32部分可以直接用vs编译.

    操作系统实验二:进程、线程之间的同步

    1。生产者消费者问题(信号量+mutex) 参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,...编写一个写者优先解决读者写者问题的程序,其中读者和写者均是多个进程,用信号量作为同步互斥机制。

    公交车司机售票线程问题

    pthread.h是UNIX的一个库,windows需要拖 &lt;pthread.h&gt;库

    多线程编程指南(系统描述了线程标准 线程同步 多线程编程原则 等)

    线程同步20 使用64 位体系结构20 2 基本线程编程23 线程库................................................................................................................................................. ...

    C语言线程调度与优先级配置示例

    通过配置线程调度策略与优先级,可使各线程按照设定的顺序执行,从而达到线程间同步的目的,线程属性配置函数包括: pthread_attr_init(&attr[i]);// 初始化线程属性 pthread_attr_setschedpolicy(&attr[i], SCHED...

    Linux线程同步之互斥量(mutex)

    互斥量(也称为互斥锁)出自POSIX线程标准,可以用来同步同一进程中的各个线程。当然如果一个互斥量存放在多个进程共享的某个内存区中,那么还可以通过互斥量来进行进程间的同步。  互斥量,从字面上可以知道是...

    Posix线程编程指南.rar

    线程同步 4.1互斥锁 4.1.1 创建和销毁 4.1.2互斥锁属性 4.1.3锁操作 4.1.4其他 4.2条件变量 4.2.1创建和注销 4.2.2等待和激发 4.2.3其他 4.3信号灯 4.3.1创建和注销 4.3.2点灯...

    Jack_pthread_lock_test.rar

    打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”可执行文件;2. 输入“./test”运行...

    Pthread互斥问题

    操作系统中调用Pthread实现进程互斥

    2_pthread_sync.tgz

    linux 同步与互斥 posix 线程同步 实现 。(此为博客http://blog.csdn.net/shallnet 文章对应源码下载)

    Linux下多线程间通信

    不过要注意的是线程间需要做好同步,一般用 mutex。pthread_mutex_lock 声明开始用互斥锁上锁,此后的代码直至调用 pthread_mutex_unlock 为止,均被上锁,即同一时间只能被一个线程调用执行。当一个线程执行到 ...

    Linux线程同步之条件变量

    条件变量是线程可用的另一种同步机制。条件变量给多个线程提供了一个会合的场所。条件本身是由互斥量保护的。线程在改变 条件状态前必须首先锁住互斥量。  条件变量的初始化 pthread_cond_init  去除初始化 ...

    Window下多线程编程、Linux下多线程编程-多线程实验bistu

    (2)基于Beginthread实现多线程,并实现线程的简单同步。 (3)实现多线程字符串查找程序 Linux: (1)实现多线程字符输出,存在三个线程,线程1用来监听用户输入和其他两个线程的监听器,线程2的主要内容为每隔一...

    多线程与智能指针.pdf

    线程同步 多线程同时读写同⼀份共享资源的时候,可能会引起冲突。需要引⼊线程"同步"机制,即各位线程之间有序地对共享资源进⾏操 作。 #include &lt;pthread.h&gt; using namespace std; queue&lt;int&gt; q; void *pop(void* ...

    pthread和win32的临界区 Critical Section 比较

    [并发并行] [线程同步] [pthread和win32的临界区 Critical Section 比较] vs2010

Global site tag (gtag.js) - Google Analytics