رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های 'نخ'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


آی‌او‌استریم

چیزی برای نمایش وجود ندارد

چیزی برای نمایش وجود ندارد

تالارهای گفتگو

  • انجمن‌های آی او استریم
    • اخبار و اعلامیه‌های سایت
    • اسناد و قوانین مرجع
    • جلسات و دوره‌همی‌های آنلاین
    • پادکست‌های آموزشی
    • معرفی محصولات نوشته شده‌ بومی
    • مرکز نظرسنجی
    • مقالات و اسناد مشاوره‌ای
    • مرکز چالش برانگیز برنامه‌نویسان
    • رمز‌های موفقیت
    • ابزار‌ها و نرم‌افزارهای کاربردی برنامه‌نویسان حرفه‌ای
  • برنامه نویسی در C و ‏++C
    • سوالات عامیانه در رابطه با ++C مدرن
    • کتابخانه‌های استاندارد STL
    • کتابخانه بوست (Boost)
    • کتابخانه کیوت (Qt)
    • کتابخانه‌‌ی SDL
    • کتابخانه‌های گرافیکی Vulkan, OpenGL, Metal, Direct3D
    • کتابخانه‌‌ی OpenCV
    • کتابخانه‌‌ی Cuda
    • کتابخانه‌‌ی OpenMP
    • کتابخانه‌‌ی OpenCL
    • کتابخانه‌های دیگر
    • کامپایلر‌ها
    • کتابخانهٔ SFML
    • ابزار‌ها
  • استارتاپی و کسب‌و‌کار
    • استارتاپ‌ها
    • سرمایه گذاری
    • شتاب دهنده‌ها
    • پارک‌های علم و فناوری و مراکز رشد
    • مصاحبه با استارت‌آپ‌ها
    • قوانین حقوقی
    • داستان‌های موفقیت
    • کارآفرینان و متخصصین
    • مشاوره اجرای کسب‌وکار
    • اخبار حوزه‌ی استارتا‌پی
    • آگهی‌های استخدامی
  • ابزار‌های ساخت و ساز
    • ابزار CMake
    • ابزار QMake
    • ابزار Qbs
    • ابزار Make و Autotools
  • طراحی و توسعه وب
  • طراحی و توسعه وب اپلیکیشن‌ها
    • طراحی و توسعه در Angular
    • طراحی و توسعه در React.JS
    • طراحی و توسعه در Vue.JS
  • طراحی و توسعه موبایل و اِمبِد‌ها و تلوزیون‌ها
    • برنامه نویسی تحت محصولات اپل
    • برنامه نویسی تحت محصولات گوگل
    • طراحی و توسعه تحت محصولات دیگر
  • برنامه‌نویسی سطح پایین و سیستم عامل‌ها
    • سیستم عامل‌های آزاد
    • سیستم عامل‌های تجاری
    • مباحث آموزشی مرتبط با سیستم‌عامل
  • شبکه و اینترنت
    • مباحث و منابع آموزشي
    • سوالات و مشکلات
  • بانک‌های اطلاعاتی
  • برنامه نویسی تحت محصولات اپل
  • برنامه نویسی تحت محصولات مایکروسافت
  • طراحی و توسعه تجربه کاربری (UX) و رابط کاربری (UI)
  • سوالات و مباحث عامیانه
  • سطل آشغال

Product Groups

  • کتاب‌ها و مقالات آموزشی

تقویم ها

دسته ها

  • علمی
  • استارتاپی
  • برنامه‌نویسی
    • زبان‌های برنامه نویسی
    • معماری‌ها
  • کامپایلر و مفسر
  • محیط‌های توسعه
  • طراحی و توسعه‌ی وب
  • مجوز‌های نرم‌افزاری
  • فناوری‌ها
    • پردازش تصویر
    • اینترنت اشیاء
    • پردازش ابری (Cloud Computing)
    • چند سکویی (Cross-Platform)
    • بیگ دیتا (Big Data)
    • هوش مصنوعی (AI)
    • سخت افزار
    • نرم‌افزار و اپلیکیشن
    • اینترنت و شبکه
    • رمزنگاری
    • امبد‌ها (Embedded)
  • طراحی
    • تجربه کاربری
    • رابط کاربری

دسته ها

  • عمومی

دسته ها

  • عمومی
  • گرافیکی
  • شبکه و ارتباطات

دسته ها

  • کامپایلر‌ها
  • محیط‌های توسعه
  • کتابخانه‌ها
  • ماژول‌ها و پلاگین‌ها
  • محصولات بومی
  • کتاب‌ها و مقالات
  • زبان‌ها و ابزار‌ها
  • طراحی و گرافیک

جستجو در ...

نمایش نتایجی که شامل ...


تاریخ ایجاد

  • شروع

    پایان


آخرین بروزرسانی

  • شروع

    پایان


فیلتر بر اساس تعداد ...

تاریخ عضویت

  • شروع

    پایان


گروه


درباره من


شماره تلفن همراه


شناسه گیت‌هاب


شناسه لینکدین


شناسه پیام رسان


شهر


آدرس پستی

5 نتیجه پیدا شد

  1. alihaydari

    سلام من از پلتفرم code blocks برای نوشتن برنامه های ++C استفاده میکنم. بعد از پیکربندی پلتفرم برای C++17 (ویندوز 32 بیت)با مشکل عدم شناسایی thread در ++C مواجه شدم. در حالیکه پلتفرم با c++14 به خوبی نخ ها رو اجرا میکنه اما c++17 با خطای thread is not a member of std و خطای 'thread' was not declared this scope در بخش بیلدینگ مواجه میشود. در حالیکه سرایند thread شناخته میشود؟ توجه: در cmd ورژن gcc نه هست و در کدها ورژن C++ را چک کردم 17 بود. ویژگی های غیر thread مرتبط با استاندارد 17 اجرا میشود اما thread ها اجرا نمیشوند. من این meganz / mingw-std-threads (در اینجا هم تاکید شده که کلاسهای thread در نسخه جدیدmingw از دست رفته اند.(Implementation of standard C++11 threading classes, which are currently still missing on MinGW GCC.)) را برای حل موضوع پیدا کردم.
  2. kambiz behnia

    باسلام تقریبا مدت زیادی است که درگیر Socket programming و Thread هستم. و هر چند وقت یکبار سوالاتی را در مورد چگونگی استفاده از آنها در فروم های مختلف مطرح و تا حدودی پاسخ خود را یافته ام. با توجه به اینکه گذشت زمان سوالات و شرایط تغییر کرده و لذا خواستم سوالاتی از این دست را یکبار دیگر از ابتدا مطرح و جواب کاملی برای هر کدام داشته باشم. اگر چه امکان دارد جواب هرکدام از این سوالات بطور پراکنده و جداگانه در سایتهای مختلف موجود باشد. علاوه بر آن کمتر جایی یدم که این دو موضوع را با هم بررسی کرده باشند یا فقط به مبحث Thread پرداخته اند ویا فقط درباره Socket توضیح داده اند آن هم فقط در مورد بعضی از توابع مرتبط. حتما دوستان با ترتیب اجرای دستورات و نحوه ایجاد و مفهوم سوکتهای سمت سرور و کلاینت آشنا هستند و هفت نحوه استفاده از آنها نیست بلکه هدف این است اگر من بخواهم از این توابع در Thread های مختلف استفاده کنم آیا امکان پذیر است. آیا پاسخ های داده شده برای محیط Windows, Linux, ... هردو درست است علاوه بر کتابخانه های همراه کمپایلرها کتابخانه های دیگری نظیر Boost - Poco - ACE - Qt - ... هم کتابخانه ای برای کار با شبکه دارند وضعیت توابع مشابه در آنها چگونه است. سوالات رو از سمت سرور شروع میکنم. فرض لازم است سمت سرور 3 سوکت سروری داشته باشیم. SOCKET AcceptSock1; SOCKET AcceptSock2; SOCKET AcceptSock3; حال باید دستورات زیر اجرا شود int InitFunction(SOCKET &AcceptSock) { SOCKET AcceptSock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); if (AcceptSock == INVALID_SOCKET) { printf("Function socket failed with error : %u\n", WSAGetLastError()); return 0; } int iTimeout = 500; BOOL option = TRUE; int iResult = setsockopt(AcceptSock, SOL_SOCKET, SO_RCVTIMEO, (char *)&iTimeout, sizeof(iTimeout)); if (iResult == SOCKET_ERROR) { printf("Function setsockopt failed with error: %u\n", WSAGetLastError()); return 0; } SOCKADDR_IN client_sin; SOCKADDR_IN local_sin; int iAddrSize = sizeof(client_sin); int iPort = 12345; // select the local interface, and bind to it local_sin.sin_addr.s_addr = htonl(INADDR_ANY); local_sin.sin_family = AF_INET; local_sin.sin_port = htons(iPort); if (bind(AcceptSock, (struct sockaddr *)&local_sin, sizeof(local_sin)) == SOCKET_ERROR) { printf("Function bind failed with error: %u\n", WSAGetLastError()); return 0; } if (listen(AcceptSock, 32) == SOCKET_ERROR) { printf("Function listen failed with error: %u\n", WSAGetLastError()); return 0; } } فانکشن بالا باید برای AcceptSock1 و AcceptSock2 و AcceptSock3 اجرا شود. با اجرای سه کد زیر. InitFunction(AcceptSock1); InitFunction(AcceptSock2); InitFunction(AcceptSock3); سوال آیا من میتوانم هرکدام از سه دستور بالا را در Thread های مختلف اجرا کنم ویا باید حتما در Thread main اجرا شود. برای پذیرش کلاینتهایی که درخواست اتصال دارند از تابع زیر استفاده میکنیم int ProcessFunction(SOCKET &AcceptSock) { fd_set fd; timeval tv; SOCKADDR_IN client_sin; int iAddrSize = sizeof(client_sin); while (true) { tv.tv_sec = 3; tv.tv_usec = 0; FD_ZERO(&fd); FD_SET(AcceptSock, &fd); int iResult = select(0, &fd, NULL, NULL, &tv); if (iResult == SOCKET_ERROR) { printf("Function select failed with error: %u\n", WSAGetLastError()); closesocket(AcceptSock); return 0; } if (iResult == 0) { continue; } SOCKET soc = accept(AcceptSock, (struct sockaddr *) &client_sin, &iAddrSize); if (soc == INVALID_SOCKET) { printf("Function accept failed with error: %u\n", WSAGetLastError()); continue; } //... Do } } که باید برای AcceptSock1 و AcceptSock2 و AcceptSock3 اجرا شود. با اجرای سه کد زیر. ProcessFunction(AcceptSock1); ProcessFunction(AcceptSock2); ProcessFunction(AcceptSock3); سوال سوال آیا من میتوانم هرکدام از سه دستور بالا را در Thread های مختلف اجرا کنم کلا لازم نیست هیچ گونه عملیات لاکی صورت گیرد. آیا من میتواند از AcceptSock1 در دو Thread مختلف استفاده کنم (پاسخ خیر است فقط میخواستم جواب در اینجا باشد). اگر استفاده کنم چه اتفاقی پیش میآید. فانکشن ()WSAGetLastError قطعا Threadsafe نیست ولی آیا توابع دیگری که کد خطا را بروز میکنند Threadsafe نیستند. برای خواندن و نوشتن اطلاعات از Socket پذیرش شده از توابع زیر استفاده می کنیم int SendMessageFunction (SOCKET sock, const char * msg, int len) { fd_set fd; timeval tv; tv.tv_sec = 0; tv.tv_usec = 0; FD_ZERO(&fd); FD_SET(sock, &fd); int iResult = select(0, NULL, &fd, NULL, &tv); if (iResult == SOCKET_ERROR) { printf("Function SendMessage failed with error: %u\n", WSAGetLastError()); return -1; } int rc = send(sock, (char *)msg, len, 0); if (rc != len) { return -1; } return 1; } int ReceiveMessageFunction(SOCKET sock, char * msg, int &len) { fd_set fd; timeval tv; tv.tv_sec = 0; tv.tv_usec = 0; FD_ZERO(&fd); FD_SET(sock, &fd); int i = select(0, &fd, NULL, NULL, &tv); if (i == SOCKET_ERROR) { printf("Function ReceiveMessage failed with error: %u\n", WSAGetLastError()); return -1; } else if (i == 0) { // no data on socket return 0; } // //... //len = ... //... int rc = recv(sock, (char *)msg, len, 0); // ... return 1; } آیا من میتوانم تاوابع بالا را در Threadهای مختلف استفاده کنم و یا خیر. آیا امکان خواندن از یک سوکت توسط دو Thread مختلف امکان پذیر است. نوشتن چطور آیا میتوان یک Thread از Socket بخواند و Thread دیگری در آن بنویسد. با توجه به این موضوع که در یکی از صفحات اینترنتی بیان شده بود که Boost برخلاف کتابخانه های دیگر Threadsafe است (اگرچه امروز هرچه گشتم دوباره آنرا پیدا نکردم) پاسخ با توجه به پلتفورم )Windows, Linux, ..) و کتابخانه مورد استفاده (پیشفرض کمپایلر - ACE - Poco - Boost Qt - ...) در نظر گرفته شود. متشکرم
  3. با سلام. در حال یادگیرQt و Thread ها بودم که به مشکل دسترسی به متغیر در Thread بر خوردم. کلاس زیر از QThread مشتق شده است : #ifndef MYTHREAD_H #define MYTHREAD_H #include <QObject> #include <QWidget> #include <QThread> #include <QMutex> class MyThread : public QThread { Q_OBJECT public: explicit MyThread(QObject *parent = nullptr); void run() override; bool Stop; signals: void NumberChanged(int); }; #endif // MYTHREAD_H #include "mythread.h" MyThread::MyThread(QObject *parent) : QThread (parent) { } void MyThread::run() { for(int i=0; i<100000000 ; ++i){ QMutex mutex; mutex.lock(); if (this->Stop) break; mutex.unlock(); emit NumberChanged(i); this->msleep(100); } } داخل فرم خودم دو QPushBotton و یک QLabel دارم. که یکی از دکمه‌ها (QPushButton) وظیفه اجرای یک QThread را دارد و یکی دیگه باعث متوقف کردن کار QThread ایجاد شده : #include "dialog.h" #include "ui_dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog){ ui->setupUi(this); mThread = new MyThread(this); connect(mThread,SIGNAL(NumberChanged(int)),this,SLOT(onNumberChanged (int))); } Dialog::~Dialog(){ delete ui; } void Dialog::onNumberChanged(int Number){ ui->label->setText(QString::number(Number)); } void Dialog::on_pushButton_clicked(){ mThread->start(); } void Dialog::on_pushButton_2_clicked(){ mThread->Stop = false; } در کد بالا زمانی‌که on_pushButton_clicked فراخوانی شد. QThread را اجرا میکند. و در مقابل زمانی‌که on_pushButton_2_clicked فراخوانی شد. متغیر bool MyThread::Stop را برابر مقدار false میگذارد که باعث از بین رفتن عملیات QThread ایجاد شده میشود. اما در اصل هیچ تفاوتی ایجاد نمیکند ؟ و زمان بستن برنامه با خطای لاگ زیر برخورد میکنم : 21:39:20: Starting /tmp/untitled/build-untitled-Desktop_Clang_7_0_0-Debug/untitled... QThread: Destroyed while thread is still running 21:39:32: The program has unexpectedly finished. 21:39:32: The process was ended forcefully. 21:39:32: /tmp/untitled/build-untitled-Desktop_Clang_7_0_0-Debug/untitled crashed. کجای کار اشتباه شده است ؟
  4. با سلام ! آیا برنامه ها به صورت خودکار در حالت Multi Threading اجرا میشوند ؟ بنده قطعه کد زیر را کامپایل و اجرا گرفته ام : main.cpp #include <iostream> int main(void){ constexpr double long AnotherIndex = 999999999999999999; for(double long index=0;index <= AnotherIndex;++index){ std::cout << index << std::endl; } return 0x0000; } بعد از اجرا ، خروجی برنامه ی htop به اینصورت بود : 1 [|||||||||||||||||||||| 71.9% ] Tasks: 166, 738 thr; 4 running 2 [||||||||||||||||||| 60.30%] Load average: 2.94 1.88 1.61 3 [||||||||||||||||||||||| 74.1% ] Uptime: 04:50:24 4 [|||||||||||||||||| 56.6% ] Mem[||||||||||||||||||||||||2.76G/3.71G] Swp[||| 790M/7.99G] PID USER PRI NI VIRT PES SHR S CPU% MEM% TIME+ Command 18991 ghasem 20 0 5616 1692 1544 R 89.1 0.0 1:13.01 /tmp/Opt/main یعنی زمان اجرای این برنامه هر چهار هسته ی پردازنده درگیر خواهد شد ! ... آیا کامپایلر به صورت خودکار متناسب با پردازش Multi Threading کد را کامپایل میکند ؟ یا اینکه این‌کار به عهده سیستم عامل می‌باشد ؟
  5. GornerLabo

    با سلام و خسته نباشید. اگر امکانش باشه یه آموزش به صورت پروژه محور در مورد QThread در GUI تهیه کنید. آموزش های سطح اینترنت بسیار ساده هستش و از سیگنال و اسلات بسیار کم استفاده شده. ممنون بابت سایت خوبتون
×
×
  • جدید...