`
zhou347742
  • 浏览: 9938 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

创建多线程做减法(简化1)

阅读更多

坑爹的师父,坑爹的代码……粗略的精简了一下,但是线程的创建还是有点问题,下一版再研究

以下是代码:

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

#define SIZE 5

int sum;
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

void * thread(void *);

int main(int argc, char *argv[])
{
    pthread_t tid[SIZE];
    int i, rc[SIZE] = {0, 0, 0, 0, 0};
    printf("enter main\n");
    printf("Please input a number : \n");
    scanf("%d", &sum);
    while (sum >= 0)
    {
	for (i = 0; i < SIZE; i++)
	{
	    rc[i] = pthread_create(&tid[i], NULL, thread, &i);
	    if (rc[i] != 0)
	    	printf("The thread%d-create is failed!\n", i);
        }
    }
    pthread_cond_wait(&cond, &mutex);
    printf("leave main\n");
    exit(0);
}

void * thread(void *arg)
{
    int * nArg = (int *)arg;
    printf("enter thread%d\n", *nArg);
    pthread_mutex_lock(&mutex);
    if (sum <= 0)
	exit(0);
    else
	printf("This is thread%d, sum : %d, thread id is %u\n", *nArg, sum, (unsigned int)pthread_self());
    pthread_cond_signal(&cond);
    sum -= (*nArg);
    printf("This is thread%d, sum : %d, thread id is %u\n", *nArg, sum, (unsigned int)pthread_self());
    pthread_mutex_unlock(&mutex);
    printf("leave thread%d\n", *nArg);
    pthread_exit(0);
}

 

  • 大小: 410.3 KB
1
1
分享到:
评论

相关推荐

    MFC程序设计加法运算

    但如果你需要处理大量数据或高频率的计算,可以考虑使用更高效的算法或数据结构,例如使用`__int64`处理大整数,或者使用多线程来并行计算。 总结来说,"MFC程序设计加法运算"是一个基础的编程任务,它结合了MFC...

    VC++动态链接库(dll)编程(含程序实例)

    创建MFC常规DLL时,我们需要选择“MFC DLL”项目模板,并选择“在静态多线程运行时库MT或MTd下编译”以确保与各种类型的MFC应用程序兼容。 - **MFC扩展DLL**:与常规DLL不同,MFC扩展DLL允许直接向调用者暴露MFC...

    MFC一百以内加减速算题

    6. **线程(Thread)**:如果应用有并发需求,比如在后台计算得分或加载新题目,可能会用到多线程技术。 7. **动态链接库(DLL)**:MFC支持创建和使用DLL,可以用来封装算法或实现跨进程通信。 8. **数据库访问...

    MatLib.zip_MATLIB_vb.net 矩阵_vb.net矩阵运算_矩阵_矩阵 vb

    10. **优化与性能**:为了提高效率,`MatLib`可能采用了多线程、缓存优化或其他高级技术。 `MatLib.vb`文件很可能是库的核心源代码,包含所有这些功能的实现。通过学习和使用这个库,VB.NET开发者可以轻松地在项目...

    Visual Basic 教程及案例

    ### Visual Basic 教程及案例知识点详述 #### 一、Visual Basic 简介与特点 - **定义**:Visual Basic(简称VB...此外,还可以进一步探索 Visual Basic 的高级特性,如多线程处理、网络编程等,以扩展自己的技能树。

    快速傅里叶变换的基2FFT算法的C 实现.doc

    快速傅里叶变换(FFT)是一种高效的计算离散傅里叶变换(DFT)的算法,广泛应用于信号处理、图像...在实际应用中,可能会根据具体需求进一步优化,例如使用更高效的数据结构,或者利用多线程和并行计算技术来加速运算。

    delphi COM深入编程

    3. **考虑线程安全问题**:在多线程环境中使用COM时,需要确保组件具有良好的线程安全性。 4. **错误处理**:正确处理COM调用中的异常和错误,提高程序的健壮性。 #### 五、COM组件实例 假设我们要创建一个简单的...

    C# 数据结构——三元组与十字链表——稀疏矩阵

    同时,为了提高性能,可能还需要引入缓存策略,或者利用多线程进行并行计算。 以上就是使用C#中的三元组和十字链表实现稀疏矩阵的基本思路和操作。通过这种方式,我们可以在处理大规模稀疏矩阵时获得更好的时间和...

    jdk新特性研究精髓

    新版本的Java支持创建并发安全的Map集合,这种集合能够在多线程环境中安全地进行读写操作。同时,还可以使用简洁的语法来初始化Map集合: ```java Map, Integer&gt; map = {name: "xxx", age: 18}; ``` 这种方式不仅...

    一个简单的数学运算库c#版

    为了优化性能,可能会采用缓存技术、多线程计算或者GPU并行计算等策略。 此外,库的设计应该遵循良好的编程规范,包括适当的注释、错误处理和单元测试,以确保代码的可读性和可靠性。为了方便用户使用,还需要提供...

    Vb.net 让控件沿窗体边缘四周跑马移动

    7. **多线程与UI更新**:虽然Windows Forms默认在主线程上处理UI更新,但如果是复杂的动画效果,可能需要考虑多线程以避免阻塞主线程。然而,在VB.NET中,对UI的操作必须在主线程进行,因此需要使用`Control.Invoke`...

    java_matrix类库

    8. **性能优化**:为了提高效率,类库可能采用了特定的数据结构和算法,如动态内存管理、多线程处理等,以适应大规模矩阵运算的需求。 9. **扩展性与兼容性**:作为一个成熟的类库,Java_matrix可能考虑了与其他...

    NVIDIA CUDA Programming Guide

    CUDA将GPU视为一个高度多线程的协处理器。GPU上的计算核心可以同时处理成千上万个线程,这种能力使得GPU非常适合于执行大规模并行计算任务。在CUDA编程模型中,每一个计算任务都可以被视为一个“线程”。 **2.2 ...

    NTL for windows

    8. **多线程支持**:NTL库部分功能支持多线程,使得开发者可以利用多核处理器来加速计算,尤其在需要大量并行计算的场景下。 9. **文档和示例**:NTL库通常会包含详尽的文档和示例代码,帮助开发者快速理解和使用这...

    基于MFC 的简易计算器

    如果计算过程较复杂,可以考虑使用异步处理或多线程。 通过这个基于MFC的简易计算器项目,开发者可以深入理解MFC框架的工作原理,掌握Windows程序设计的基本方法,同时也能锻炼到面向对象编程和UI设计的能力。随着...

    Apress.Accelerated.C#.2008.pdf

    - 如何使用Task并行库(TPL)来简化多线程编程。 - 并发集合和异步编程模式的使用技巧。 ### 13. 寻找C#的标准形式 (In Search of C# Canonical Forms) - **介绍**:这一章节讨论了C#编程中的最佳实践。 - **重点...

    简单计算器程序(VC 6.0)

    【简单计算器程序(VC 6.0)】是一款基于微软的Visual C++ 6.0开发环境构建的应用程序,它提供了基本的计算功能,能够执行加、减、...这是一个逐步进阶到更复杂编程概念的起点,例如面向对象编程、异常处理和多线程等。

    矩阵运算算法,c++,课程设计

    6. **矩阵运算的效率优化**:为了提高矩阵运算的效率,可以使用多线程、OpenMP库或者CUDA进行并行计算,尤其在处理大数据量的矩阵时,这将大大缩短计算时间。 7. **课程设计实践**:在课程设计中,你需要实现上述...

    c语言中使用的矩阵库

    6. **优化**:为了提高性能,矩阵库可能包含一些优化策略,例如利用SIMD(单指令多数据)指令进行向量化处理,或者通过多线程并行计算。 7. **错误检查**:在执行矩阵运算时,库通常会检查非法操作,例如试图对非...

Global site tag (gtag.js) - Google Analytics