找到 34423 篇文章,关于编程

使用线程同步按顺序打印数字

Nishtha Thakur
更新于 2019年7月30日 22:30:26

615 次查看

这里我们将看到如何使用不同的线程按正确的顺序打印数字。我们将创建 n 个线程,然后同步它们。其思想是,第一个线程将打印 1,然后第二个线程将打印 2,依此类推。当一个线程试图打印时,它将锁定资源,因此没有线程可以使用该部分。示例 #include #include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t* cond = NULL; int threads; volatile int count = 0; void* sync_thread(void* num) { //此函数用于同步线程 int thread_number ... 阅读更多

C语言中FILE的数据类型是什么?

Smita Kapse
更新于 2019年7月30日 22:30:26

3K+ 次查看

在 C 语言中我们使用了文件。为了处理文件,我们使用 FILE 类型的指针。因此 FILE 是一个数据类型。这称为不透明数据类型。因此它的实现是隐藏的。FILE 的定义是特定于系统的。这是 Ubuntu 系统中 FILE 的定义 -FILE 定义 struct _IO_FILE { int _flags; /* 高位字是 _IO_MAGIC;其余是标志。 */ #define _IO_file_flags _flags /* 以下指针对应于 C++ 流缓冲区协议。 */ /* 注意:Tk 直接使用 _IO_read_ptr 和 _IO_read_end 字段。 */ char* _IO_read_ptr; /* 当前读取 ... 阅读更多

C语言中的卫生宏

Nishtha Thakur
更新于 2019年7月30日 22:30:26

474 次查看

这里我们将看到 C 语言中的卫生宏。我们知道 C 语言中宏的用法。但是有时,由于意外捕获标识符,它不会返回预期的结果。如果我们看到下面的代码,我们可以看到它不能正常工作。示例 #include #define INCREMENT(i) do { int a = 0; ++i; } while(0) main(void) { int a = 10, b = 20; //对 a 和 b 调用宏两次 INCREMENT(a); INCREMENT(b); printf("a = %d, b = %d", a, b); }预处理后的代码将如下所示 - 示例 #include #define ... 阅读更多

C 和 C++ 之间的兼容性问题

Smita Kapse
更新于 2019年7月30日 22:30:26

126 次查看

这里我们将看到 C 和 C++ 之间的一些不兼容性。一些可以使用 C 编译器编译的 C 代码,但在 C++ 编译器中无法编译。并且还会返回错误。我们可以使用一种语法定义函数,该语法可以选择地在参数列表之后指定参数类型。示例 #include void my_function(x, y) int x; int y; { // 在 C++ 中无效 printf("x = %d, y = %d", x, y); } int main() { my_function(10, 20); }输出 x = 10, y = 20输出 C++ 中的错误:- x 和 y 在此范围内未声明 在 C 语言或某些较旧版本的 C++ 中,... 阅读更多

C语言中fork()和exec()的区别

Anvi Jain
更新于 2019年7月30日 22:30:26

3K+ 次查看

这里我们将看到 C 语言中 fork() 和 exec() 系统调用的效果。fork 用于通过复制调用进程来创建新进程。新进程是子进程。请参见以下属性。子进程有其自己唯一的进程 ID。子进程的父进程 ID 与调用进程的进程 ID 相同。子进程不继承父进程的内存锁和信号量。fork() 返回子进程的 PID。如果值为非零,则它是父进程的 ID,如果为 0,则... 阅读更多

C语言中的pthread_self()

Nishtha Thakur
更新于 2019年7月30日 22:30:26

8K+ 次查看

这里我们将看到 C 语言中 pthread_self() 的效果。pthread_self() 函数用于获取当前线程的 ID。此函数可以唯一标识现有线程。但是,如果有多个线程,并且一个线程已完成,则可以重用该 ID。因此,对于所有运行的线程,ID 都是唯一的。示例 #include #include #include void* func(void* p) { printf("From the function, the thread id = %d", pthread_self()); //获取当前线程 ID pthread_exit(NULL); return NULL; } main() { pthread_t thread; //声明线程 ... 阅读更多

C语言中的pthread_equal()

Smita Kapse
更新于 2019年7月30日 22:30:26

222 次查看

pthread_equal() 函数用于检查两个线程是否相等。这将返回 0 或非零值。对于相等线程,它将返回非零,否则返回 0。此函数的语法如下所示 - int pthread_equal (pthread_t th1, pthread_t th2); 现在让我们看看 pthread_equal() 的实际应用。在第一种情况下,我们将检查自线程以检查结果。示例 #include #include #include #include #include pthread_t sample_thread; void* my_thread_function(void* p) { if (pthread_equal(sample_thread, pthread_self())) { //pthread_self 将返回当前线程 ID printf("Threads are equal"); } else ... 阅读更多

C语言中的pthread_cancel()

Anvi Jain
更新于 2019年7月30日 22:30:26

622 次查看

threa_cancel() 用于通过线程 ID 取消特定线程。此函数向线程发送一个取消请求以终止。pthread_cancel() 的语法如下所示 - int pthread_cancel(pthread_t th); 现在,让我们看看如何使用此函数取消线程。示例 #include #include #include #include int count = 0; pthread_t sample_thread; void* thread_one_func(void* p) { while (1) { printf("This is thread 1"); sleep(1); //等待 1 秒 count++; if (count == 5) { //如果... 阅读更多

C/C++中的nextafter()和nexttoward()

Nishtha Thakur
更新于 2019年7月30日 22:30:26

205 次查看

这里我们将看到 C 或 C++ 中 nextafter() 和 nextforward() 函数的效果。这些函数存在于 math.h 或 cmath 库中。如果函数类似于 nextafter(a, b) 和 nextforward(a, b)。这些函数用于查找 a 之后朝 b 方向的下一个可表示值。nextforward() 具有更精确的第二个参数 b。示例 #include #include main () { //nextafter 函数() printf ("Smallest representable number after 0 towards 1 : %e", nextafter(0.0, 1.0)); printf ("Largest representable number before -1 towards 0 :%e", nextafter(0.0, -1.0)); printf ("Largest +ve representable number ... 阅读更多

关于C语言编程的有趣事实

Smita Kapse
更新于 2019年7月30日 22:30:26

333 次查看

这里我们将看到一些关于 C 语言编程的有趣事实。如下所示。有时,某些 switch 语句的 case 标签可以放在 if-else 语句中。示例 #include main() { int x = 2, y = 2; switch(x) { case 1: ; if (y==5) { case 2: printf("Hello World"); } else case 3: { //case 3 块 ... 阅读更多

广告
© . All rights reserved.